我在找出如何告诉 XSD 字段数据的最小长度必须为 12 位数字和最大长度为 14 位数字时遇到一些麻烦。有没有人知道如何做到这一点,因为minlength和maxlength只能用于字符串。
<xs:simpleType name="timestamp_vorige_inspectie">
<xs:restriction base="xs:integer">
<xs:minLength value="12"/>
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud) 我发现将复杂类型从一个 XSD 文件导入和引用到另一个 XSD 文件时遇到困难。让我用一个例子来说明我的场景
学生.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="xyz"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:common="xyz"
xmlns="xyz"
elementFormDefault="qualified">
<xsd:element name="student" type="student" />
<xsd:complexType name="student">
<xsd:sequence>
<xsd:element name="id" type="xsd:string" />
<xsd:element name="birth-date" type="xsd:date" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)
这是另一个 XSD,Teacher.xsd,我想在其中引用 Student.xsd 中的复杂类型 Student
老师.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="xyz"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:common="xyz"
xmlns="xyz"
elementFormDefault="qualified">
<xsd:import schemaLocation="student.xsd"
namespace="xyzzz" />
<xsd:element name="teacher" type="teacher" />
<xsd:complexType name="teacher">
<xsd:sequence>
<xsd:element name="id" type="xsd:string" />
<xsd:element name="name" type="xsd:string" />
// TODO - Refer to student from student.xsd
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)
我看过其他 Stack …
我正在为一个没有内容、只有属性的元素编写 XSD,这看起来相当简单:
<xs:complexType name="ViewElement">
<xs:attribute name="Name" type="xs:string" use="required"/>
</xs:complexType>
<xs:element name="VIEW" type="ViewElement" minOccurs="0" maxOccurs="unbounded"/>
Run Code Online (Sandbox Code Playgroud)
如果 XML 包含
<VIEW Name='V_UP'></VIEW>
Run Code Online (Sandbox Code Playgroud)
或者
<VIEW Name='V_UP'/>
Run Code Online (Sandbox Code Playgroud)
效果很好。但如果 XML 包含
<VIEW Name='V_UP'>
</VIEW>
Run Code Online (Sandbox Code Playgroud)
我明白了
该元素不能包含空格。内容模型为空。
我想让 XML 的作者能够灵活地以这种方式编写 XML,但我不知道如何允许内容,而只允许空白内容。有什么建议么?
我有这个 xml-Schema:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="Fussballmannschaft">
<xs:complexType>
<xs:attribute name="Name" type="xs:string" />
<xs:attribute name="Stadt" type="xs:string" />
<xs:attribute name="Tabellenplatz" type="xs:string" />
<xs:element name="Spieler">
<xs:complexType>
<xs:attribute name="SpielerID" type="xs:string" />
<xs:keyref name="I_D" refer="Name" />
<xs:attribute name="Name" type="xs:string" />
<xs:element name="Torwart">
<xs:attribute name="GehealteneElfmeter" type="xs:integer" />
<xs:keyref name="ID_Torwart" refer="SpielerID" />
</xs:element>
<xs:element name="Verteidiger">
<xs:attribute name="GewonneneZweikaempfe" type="xs:integer" />
<xs:keyref name="ID_Verteidiger" refer="SpielerID" />
</xs:element>
<xs:element name="Stuermer">
<xs:attribute name="GeschosseneTore" type="xs:integer" />
<xs:keyref name="ID_Stuermer" refer="SpielerID" />
</xs:element>
</xs:complexType>
</xs:element>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
和这个样本:
<Fussballmannschaft Name="BVB">
<Stadt>Dortmund</Stadt>
<Tabellenplatz>3</Tabellenplatz>
<Spieler …Run Code Online (Sandbox Code Playgroud) 浏览器 Edge 自行将 XSD 文件从编码“UTF-8”转换为 ISO-8859-1。我的问题是 1. 这是 EDGE 的特性吗,还是 EDGE 这样做是因为 UTF-8 在我没有查看时已被弃用,并被 ISO-8859-1 取代。2. 为什么浏览器之间的处理存在差异,3. 是否存在全局首选的编码结构。已阅读 W3 学校和 Stackoverflow 文章,内容丰富,但没有建议。
我想选择一个标准来处理我的应用程序中的所有 XML 文件(会有很多)。我应该只使用 ISO-8859-1 吗?请直接指导,帮助我真的感觉自己文盲占了上风。
事实是 A. Visual Studio 使用 UTF 创建文件,b我在关联的 Xml 文件中没有特殊字符/符号,将来也不需要它们,c.chrome 浏览器忽略(不显示)以下 XML 标记,该标记显示在边缘 ' 'd。两种浏览器都会处理 file:/// ...file。
用于测试 xsd 参考的代码为 file:///D:\prjClimateControl\prgrms\slnsVsTo\prjV00G00Jun0619\sysdocXml1.xsd
边缘显示中的xml标签是但显示为
没有错误消息文件显示正确但更改了结束编码
我已经设法使用这个创建一个可选的十进制元素:
<xs:simpleType name="OptionalDecimal">
<xs:union memberTypes="xs:decimal empty-string" />
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
但我还需要添加限制,以便在输入时将其限制为最大长度为10,最大数量为3位小数.所以我有这个:
<xs:restriction base="xs:decimal">
<xs:maxInclusive value="9999999999"/>
<xs:fractionDigits value="3"/>
</xs:restriction>
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何将它们结合起来.他们可以合并吗?或者有更好的方法吗?
只是试图弄清楚是否可以通过XSD架构级别验证来实现以下场景.
例如-
<PreferredPlan>
This tag can have Values - Family or Single
Run Code Online (Sandbox Code Playgroud)
如果我得到"家庭"的价值,我应该有低于xml的元素.
<Family>
<tag1></tag1>
<tag2></tag2>
Run Code Online (Sandbox Code Playgroud)
如果捕获"单个"值,我应该有以下标签.
<Single>
<tag3></tag3>
<tag4></tag4>
</Single>
Run Code Online (Sandbox Code Playgroud)
可以使用文档类型描述(DTD)或XML架构(xsd)定义和验证XML文件,如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<annotation xmlns="http://www.xyz.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xyz.com
file:system.xsd" >
Run Code Online (Sandbox Code Playgroud)
要么
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE annotation SYSTEM "http://www.xyz.de/system.dtd">
Run Code Online (Sandbox Code Playgroud)
两种方式都定义了找到DTD或XSD的URL.有没有办法给出相对或本地路径?所以我可以将它们与XML文件一起存储,而不是依赖于服务器?
我今天参考了XSD规范,以查找十进制类型的定义。在其中,我发现了两个不同的数据类型定义冲突,一个词法定义和一个下面引用的规范定义:
3.2.3.1词汇表示
十进制具有一个词法表示,由有限长度的十进制数字序列(#x30-#x39)组成,这些序列之间用句点分隔,作为十进制指示符。允许使用可选的前导符号。如果省略符号,则假定为“ +”。前导零和尾随零是可选的。 如果小数部分为零,则可以省略周期和随后的零。例如:-1.23、12678967.543233,+ 100000.00、210。
3.2.3.2规范表示
十进制的规范表示是通过禁止词法表示(第3.2.3.1节)中的某些选项来定义的。具体来说,禁止前面的可选“ +”号。小数点是必需的。禁止前导和尾随零,但必须遵守以下规定:小数点左右必须至少有一位数字,该数字可能是零。
总而言之,如果小数的小数部分为零,则词法表示允许不存在小数点和尾随零,而规范表示则明确指出需要十进制。
以下哪个定义是“正确的”?我的应用程序正在发送词汇表示形式,而正在使用的应用程序正在期望规范表示形式。
我一直无法找到任何有关此的信息,可能是由于我没有掌握术语。我想要做的是为货币创建一个模板元素(已经有),并在两个地方使用两个不同的名称(即currentBalance和maxBalance)使用它。
我当前的模板格式为:
<xsd:element name="currency">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:double">
<xsd:attribute ref="currencyCode" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)