【发布时间】:2014-03-16 03:33:13
【问题描述】:
当您使用 xsd 架构验证我的 xml 时遇到问题,我假设这是 xmlns 属性,在我的测试中抛出以下错误:
"属性声明的 {name} 不能匹配 'xmlns'。"
我的 xsd 架构:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="MensajeProv">
<xs:complexType>
<xs:sequence>
<xs:element name="Datos">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="Mensaje">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="tipoMsjID" type="xs:string" />
<xs:element name="proveedorID" type="xs:string" />
<xs:element name="usuario" type="xs:string" />
<xs:element name="fechaIni" type="xs:string" />
<xs:element name="fechaFin" type="xs:string" />
<xs:element name="empresaID" type="xs:int" />
<xs:element name="tipoID" type="xs:int" />
<xs:element name="tituloMsj" type="xs:string" />
<xs:element name="descripcionMsj" type="xs:string" />
<xs:element name="URL" type="xs:anyURI" />
<xs:element name="accionURL" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Firmante">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="Fecha" type="xs:string" />
<xs:element name="sistemaID" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Signature" >
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="SignedInfo">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="CanonicalizationMethod" />
<xs:element name="Reference">
<xs:complexType>
<xs:sequence>
<xs:element name="Transforms">
<xs:complexType>
<xs:sequence>
<xs:element name ="Transform" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DigestMethod"/>
<xs:element name="DigestValue" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SignatureValue" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Signature">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="xmlns" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="CanonicalizationMethod">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Algorithm" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="SignatureMethod">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Algorithm" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="Reference">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="URI" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="Transform">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Algorithm" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="DigestMethod">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Algorithm" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
提前致谢
【问题讨论】:
-
一个猜测,但是你的 complexType Signature 有一个名为 xmlns 的属性,重命名它。