我正在尝试针对XSD验证我的XML文件,以检查文件是否具有正确的格式。
在我的XSd文件中,我希望Row
元素包含尽可能多的元素,即any
元素。
使用在线验证器,我检查了XSD的有效性,并在我要检查的其中一个文件上检查了我的架构。一切都是有效的。 在线验证器就是这个:http://www.utilities-online.info/xsdvalidation/
我的解析代码基于这个主题:c# XML Schema validation
我知道我的文件无效:Could not find schema information for the element <MYELEMENT>
找不到的元素是我的Row元素内容中的元素。
完整的.XSD是:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="Row" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs='1' maxOccurs='unbounded' processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
我测试过的XML是:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
<Row>
<MODE_SAISIE_CT>'DEGRADE'</MODE_SAISIE_CT>
<MODE_STATUT>'F'</MODE_STATUT>
<MODE_LIBELLE>'Dégradé'</MODE_LIBELLE>
<DATE_MODE_DEGRADE>'17/08/2011 15:28:17'</DATE_MODE_DEGRADE>
</Row>
<Row>
<MODE_SAISIE_CT>'STANDARD'</MODE_SAISIE_CT>
<MODE_STATUT>'V'</MODE_STATUT>
<MODE_LIBELLE>'Standard'</MODE_LIBELLE>
<DATE_MODE_DEGRADE>'17/08/2011 15:53:06'</DATE_MODE_DEGRADE>
</Row>
</Root>
如果我的架构中有任何元素,我该如何管理解析?
答案 0 :(得分:1)
如果没有看到显示该问题的完整XSD和输入XML,则不清楚推荐什么,但是这个工作示例可能会帮助您确定问题所在:
此输入XML:
<?xml version="1.0" encoding="utf-8"?>
<root>
<Row>
<MYELEMENT/>
</Row>
</root>
对此XSD有效:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Row">
<xsd:complexType>
<xsd:sequence>
<xsd:any processContents="lax" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>