如何通过一个XSD验证许多XML文件。有一个条件。它们具有不同的根元素名称。我使用java解析XML。我对XSD和DTD了解不多。是否可以将一个XSD文件用于此类XML文件?如何使用这个XSD文件(我对根名称定义感兴趣)?
我发现我可以使用XSD验证XML文件。我的目标是检查许多XML文件。它们的结构看起来像<root>someTextYouWant</root>
(问题的简单例子,真正的结构更难)。在每个文件中,根名称将是不同的(abc,sdfjsn,someStringYouWant)。如何定义可以承认根元素具有不同名称的XSD文件。我想使用1个XSD文件来验证具有上述结构的所有XML文件。
答案 0 :(得分:0)
使用XSD的目的是验证某些XML文档的结构。
例如,XSD中的<xs:element name="root">
可以对应于XML中的<root>
。
同样,<xs:element name="first_child" type="xs:string" />
可以对应<first_child>xyz</first_child>
。请注意,XSD还在此处指定所包含数据的类型。它可能类似于&#34; xs:int&#34;同样。
如果您正在谈论任何XML元素的内容,XSD显然不需要任何限制,不同的XML文件可以具有不同的内容/值。如果您自己谈论元素,则可以使用minOccurs
属性之类的内容来使用可选元素。
如果不查看确切的XML,很难指出正确的方法。
答案 1 :(得分:0)
您可以通过在XML文件中实现所需的xsd文件链接来进行比较,如下所示:
<xsd:schema xmlns:xsd="desired_schema_link">
您可以在要使用xsd
验证的每个XML文件中执行此操作答案 2 :(得分:0)
您可以尝试这样的schema.xsd
:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="c1">
<xs:sequence>
<xs:element name="c1e1" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="rootType" mixed="true">
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="e1" minOccurs="0"/>
<xs:element name="e2" type="c1" minOccurs="0" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="sdfjsn" type="rootType" />
<xs:element name="abc" type="rootType" />
</xs:schema>
这会将abc.xml
与abc
作为根元素
<?xml version="1.0"?>
<abc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="schema.xsd">
<e1 />
<e2>
<c1e1 />
</e2>
<e2>
<c1e1 />
</e2>
</abc>
和sdfjsn.xml
以sdfjsn
作为根元素
<?xml version="1.0"?>
<sdfjsn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="schema.xsd">
<e2> </e2>
<e1 />
</sdfjsn>