XSD中相同元素名称的不同验证

时间:2011-11-24 19:43:31

标签: xml xsd schema

我有一个像这样的XML文件:

<myNode>
   <myProperty name="Title" value="MyTitle" />
   <myProperty name="ProductId" value="123456" />
</myNode>

是否可以编写XSD来验证第一个属性(“Title”)必须是字符串,第二个属性(“ProductId”)必须是整数?

2 个答案:

答案 0 :(得分:0)

不,你不能用XSD做到这一点。看看http://www.schematron.com/是否可以为您提供帮助。

答案 1 :(得分:0)

不幸的是你不能这样做。 XML的XSD如下所示:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema 
    attributeFormDefault="unqualified"
    elementFormDefault="qualified" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="myNode">
    <xs:complexType>
      <xs:sequence>

        <xs:element maxOccurs="unbounded" name="myProperty">
          <xs:complexType>
            <xs:attribute name="name" type="xs:string" use="required" />
            <xs:attribute name="value" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>

      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

要解决您的问题,您可以为以下XML创建XSD:

<myNode>
    <Properties>
       <Title value="MyTitle" />
       <ProductId value="123456" />
    </Properties>
</myNode>