我在构建我的第一个XML Schema时遇到了很多困难。我需要它来验证形成问卷的XML文档的正确性 所以这里的部分没有得到:
我改变了来源。第一个答案是指代码:
<root>
<values>
<value>Lorem</value>
<value>ipsum</value>
<value>dolor</value>
</values>
</root>
现在我的实际目标是:
<requires>
<require requires-id="2" type="included">
<values>
<value isRequired="true">Lorem</value>
<value isRequired="false">Lorem</value>
<value isRequired="false">Lorem</value>
</values>
</require>
<require requires-id="5" type="excluded">
<values>
<value isRequired="true">Lorem</value>
<value isRequired="false">Lorem</value>
</values>
</require>
</requires>
有人可以帮忙制作一个合适的架构吗?我正在使用Sun Multi-Schema XML Validator (MSV)来根据Schema验证文档。
提前致谢,
Steff
答案 0 :(得分:4)
这应该是第一个xml:
<xs:complexType name="Values">
<xs:sequence>
<xs:element name="value" minOccurs="0" maxOccurs="200">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="isOnlyOption" type="xs:boolean"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="values" type="Values" minOccurs="0"/>
第二个看起来像这样:
<xs:element name="requires" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="require" minOccurs="1" maxOccurs="200">
<xs:complexType>
<xs:attribute name="requires-id" type="xs:IDREF"/>
<xs:attribute name="type" type="RequiresType"/>
<xs:all>
<xs:element name="values" type="Values" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
请注意第一个代码段中对自定义数据类型“值”的引用。
谢谢,
Steff
答案 1 :(得分:2)
我不知道,应该准确验证什么,但是以下xml架构将验证根标记内的值标记内的三个值标记。值必须是字符串:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://yourSchema">
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="values" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="values">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="3" maxOccurs="3" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>