Xsd 条件分组
我不完全确定我是否使用了正确的流程,甚至不确定是否可能,但是我想做的是创建一个XSL文件,该文件定义了以下模式:Xsd 条件分组,xsd,Xsd,我不完全确定我是否使用了正确的流程,甚至不确定是否可能,但是我想做的是创建一个XSL文件,该文件定义了以下模式: <data> <s> <name>Joe Blogs</name> <id>1235</id> <aa>data</aa> <ab>data</ab> <ad>dat
<data>
<s>
<name>Joe Blogs</name>
<id>1235</id>
<aa>data</aa>
<ab>data</ab>
<ad>data</ad>
<ae>data</ae>
</s>
<s>
<name>Jane Blogs</name>
<id>1234</id>
<ba>data</ba>
<bb>data</bb>
</s>
<s>
<name>Jane Blogs</name>
<id>1234</id>
<aa>data</aa>
<ac>data</ac>
<ad>data</ad>
<ae>data</ae>
<s>
</data>
乔的博客
1235
数据
数据
数据
数据
简博客
1234
数据
数据
简博客
1234
数据
数据
数据
数据
所以基本上:
标记是根。它可以是空的
标记可以出现多次。
标签必须与标签
一起使用
标签必须随附标签
和
。- 标签
必须仅在出现
(和相关标签)时出现,但不得出现在
和vica verca的位置
- 标签
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element name="s"
maxOccurs="unbounded"
minOccurs="0">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="name"/>
<xs:element name="id"/>
<xs:element name="aa"/>
<xs:element name="ab"/>
<xs:element name="ad"/>
<xs:element name="ae"/>
</xs:sequence>
<xs:sequence>
<xs:element name="name"/>
<xs:element name="id"/>
<xs:element name="aa"/>
<xs:element name="ac"/>
<xs:element name="ad"/>
<xs:element name="ae"/>
</xs:sequence>
<xs:sequence>
<xs:element name="name"/>
<xs:element name="id"/>
<xs:element name="ba"/>
<xs:element name="bb"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
任何帮助都将不胜感激。很接近了。问题是,给定您当前的声明,XSD验证器不知道当它看到一个初始的
name
元素时,它应该选择您指定的三个序列中的哪一个。不允许对输入进行前瞻性选择;它必须能够在没有前瞻的情况下导航内容模型
以这种方式重新格式化复杂类型可以消除这个问题
<xs:complexType>
<xs:sequence>
<xs:element name="name"/>
<xs:element name="id"/>
<xs:choice>
<xs:sequence>
<xs:element name="ba"/>
<xs:element name="bb"/>
</xs:sequence>
<xs:sequence>
<xs:element name="aa"/>
<xs:choice>
<xs:element name="ab"/>
<xs:element name="ac"/>
</xs:choice>
<xs:element name="ad"/>
<xs:element name="ae"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
正如你所看到的,我所做的就是在你的选择中找出共同的前缀,并把它们放在选择点之前 你很接近了。问题是,给定您当前的声明,XSD验证器不知道当它看到一个初始的
name
元素时,它应该选择您指定的三个序列中的哪一个。不允许对输入进行前瞻性选择;它必须能够在没有前瞻的情况下导航内容模型
以这种方式重新格式化复杂类型可以消除这个问题
<xs:complexType>
<xs:sequence>
<xs:element name="name"/>
<xs:element name="id"/>
<xs:choice>
<xs:sequence>
<xs:element name="ba"/>
<xs:element name="bb"/>
</xs:sequence>
<xs:sequence>
<xs:element name="aa"/>
<xs:choice>
<xs:element name="ab"/>
<xs:element name="ac"/>
</xs:choice>
<xs:element name="ad"/>
<xs:element name="ae"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
正如你所看到的,我所做的就是在你的选择中找出共同的前缀,并把它们放在选择点之前 非常感谢,你是一个救生员。非常感谢,你是一个救生员。