不同的验证对XSD

问题描述:

相同元素的名字,我有这样的XML文件:不同的验证对XSD

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

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

不幸的是,你不能这样做。 XSD为XML看起来像:

<?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> 
+0

可悲的是,我没有在XML文件控制。我只是试图尽可能使用XSD进行验证,但在这种情况下,它看起来并没有多大用处。 – Badaro

不,你不能用XSD来做到这一点。看看http://www.schematron.com/可以帮助你做到这一点。