2010-12-22 57 views
0

我有这个XML文件(其中一些是巨大的 - 数千个元素),我试图使用XSD模式验证此XML文件的某些元素。例如。日期等。现在,问题是XSD不会让我验证文档的某些部分。它想要一切的定义 - 这将是非常痛苦的。我想知道的是,有没有办法让XSD只使用文档的某些元素?我已经尝试过任何和anyAttribute无济于事。如果不是,你会如何做到这一点?是否有一个库/脚本生成与XML文档相对应的模式,然后根据我的需要进行修改?验证XML文档的一个子集或仅某些元素?

感谢,

+0

你是指XSD想要定义所有东西的含义?你怎么知道的?你在说什么“XSD”? “XSD”对“想要定义”意味着什么? – 2010-12-22 00:44:04

+0

您可能想要显示您用于验证的代码。如何完成这个任务可能取决于你使用的工具 - 通常它会。 – 2010-12-22 00:51:59

回答

1

你也有<xs:element name="aName"/>它匹配的乌尔型,所以任何类型。

一个典型的部分验证是:

<xs:schema> 
<xs:element name="theRootElement"> 
    <xs:complexType> 
    <xs:sequence> 
    <!- some wildcard wich match the beginning of the document until the desired element --> 
    <xs:any processContent="skip" namespace="somethingOrAll"/> 

    <xs:element name="theDesiredElementToMatch"> 
    <!-- the matching test --> 
    </xs:element> 

    <!-- the rest of the doc --> 
    <xs:any processContent="skip" maxOccurs="unbounded"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 
</xs:schema> 

但它并不适用于所有的模式工作,这是非常乏味的。

1

复制你关心到文档片段的DOM和运行验证对那些碎片。当然,假设你正在用API编写一些语言来完成这一切。