当你使用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>
提前致谢
答案 0 :(得分:0)
是的,xmlns就像一个保留字,仅用于声明命名空间。
答案 1 :(得分:0)
错误在于:
<xs:complexType name="Signature">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="xmlns" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
以字母“x”,“m”,“l”开头的任何属性都是非法的。因此,必须更改属性'xmlns'的名称。