2010-02-19 66 views
1
<Unit Number="1"> 
<Identifier Type="ABC" Text="STO0001"/> 
<Identifier Type="DEF" Text="Some Value"/> 
<Identifier Type="GHI" Text="20070805"/> 
<Disposition Unit="Accept"/> 
</Unit> 

我需要验证类型= “DEF” 文本= “一些价值” 不是空如何编写这个XML文档是一个有效实例的XML模式?

类似:

<xs:complexType name="requiredValue" abstract="true"/> 

<xs:complexType name="Identifier"> 
    <xs:complexContent> 
     <xs:extension base="requiredValue"> 
      <xs:attribute name="Type" use="required" fixed="DEF"/> 
      <xs:attribute name="Text" type="NonEmptyString"/> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 
+1

是一个问题:“如何编写一个XML模式,这个XML文档是一个有效的实例?”或者是一个问题:“我用什么工具让这个xml文档针对我的XML模式进行验证?” – 2010-02-19 16:18:33

+0

对不起,如何编写这个XML文档是一个有效实例的XML Schema。 – user277114 2010-02-19 16:24:12

回答

0

使用的xsd:的minLength限制:

<xsd:attribute name="Type"> 
    <xsd:simpleType> 
    <xsd:restriction base="xsd:string"> 
     <xsd:minLength value="1"/> 
    </xsd:restriction> 
    </xsd:simpleType> 
</xsd:element> 
+0

不会这也验证其他类型?我只需要验证“DEF”类型。 – user277114 2010-02-19 16:22:59

+0

如果我认为你的意思只是确保在Type =“DEF”时Text不为空......我非常确定这种类型的事情不能用XML Schema验证来完成..这不是真正的部分文件的“结构”。 XML模式并不是为结构指定“条件”值的最佳选择。 – 2010-02-19 16:28:52

+1

如果您需要验证依赖值等,请看Schematron - 它允许您在XPath中指定一组断言,并且它可以嵌入到XSD注释中(使用一些工具可以在其中找到并运行它模式正在验证中)。 – 2010-02-19 17:02:30

1

这并不完全符合您的要求,但它可能会帮助您完成大部分架构。

这允许您上传一个xml文件,它将创建一个xsd模式或一个DTD。

http://www.hitsw.com/xml_utilites/ 

这是做同样的事情。

http://www.flame-ware.com/products/xml-2-xsd/Default.aspx 

Pavel提到了Schematron。为了帮助构建这些模式,你可能想使用pyang。

http://code.google.com/p/pyang/