【发布时间】:2014-08-11 18:28:47
【问题描述】:
我可以根据 xsd 片段验证 XML 文件吗? 例如,我有一个类似的 XML:
<tag1>
<xx>...</xx>
</tag1>
还有一个像这样的 XSD:
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="envTeste">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="tag" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:totalDigits value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="tag1" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="^\d{1,15}$"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
............................
我只想使用片段“name=tag1”来验证我的 xml。 这是可能的?使用 JAXB?
非常感谢。
【问题讨论】:
-
为什么你只想验证一个片段?模式决定了您的 XML 是否有效,因此如果 XML 标记的其余部分缺少必需的元素,如何才能认为它是有效的?我认为您可以通过分段而不是在单个文件中定义架构并针对各个部分进行验证来完成更接近您想要的事情,尽管我认为这违背了拥有架构的基本目的......
-
xsd 是专有框架的一部分,我不知道他们为什么要使用单个 xsd 来验证多个 xml。我的最后一个选择是分段定义这个 xsd。