我可以根据 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?
非常感谢。
最佳答案
不,这对于 JAXB 来说是不可能的,并且我认为在给定当前 XML 架构和如图所示的 XML 数据的情况下,任何其他工具都无法执行此类部分验证。
首先,您显示的 XML 与 XML 架构的部分不一致 <xsd:element name="tag1"...>>
。因此,它无论如何都不会验证。
其次,假设 XML 架构代码和 XML 数据匹配,您可以考虑将 XML 数据包装到 <envTeste>
中。元素,但由于缺少 <tag>
,验证将不会成功。元素。
但是你可以写一个(正确且匹配的!)元素 <tag1>
作为顶级 XML 模式元素并从 <envTeste>
中引用它。然后,一个 XML 文档由 <tag1>
组成可以通过传递给解码器的 XML 模式文件进行解码。
另一个选项是(相当简单的)XSLT,用于从“有趣的”元素生成 XML 架构,并将它们安装为顶级元素 - 前提是架构不是太复杂。不确定,但可能可行。
关于java - 我可以在 Java 中根据 XSD 片段验证 XML 文件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25250005/