我想问一下如何将xmlns属性添加到xsd上的元素。
输出应该与此类似:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<asn>
<itemcode id="ITM0002212">
<serialno xmlns="1231123321231600000">
<msn/>
<msisdn>123456789</msisdn>
</serialno>
<serialno xmlns="1231123321231700000">
<msn/>
<msisdn>123456788</msisdn>
</serialno>
<serialno xmlns="1231123321231800000">
<msn/>
<msisdn>123456787</msisdn>
</serialno>
<serialno xmlns="1231123321231900000">
<msn/>
<msisdn>123456786</msisdn>
</serialno>
</itemcode>
</asn>
我尝试使用下面的xsd但应用程序不允许属性xmlns:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="asn">
<xs:complexType>
<xs:sequence>
<xs:element name="itemcode">
<xs:complexType>
<xs:sequence>
<xs:element name="serialno">
<xs:complexType>
<xs:sequence>
<element name="nac" type="xs:string" />
<element name="msisdn" type="xs:string" />
</xs:sequence>
<attribute name="xmlns" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
谢谢, 莱恩
答案 0 :(得分:0)
xmlns
属性不是真正的属性。它们由XML解析器解析,以声明serialno
,msn
和msisdn
存在的默认命名空间。因此,XML Schema实际上并不以属性的形式看到它们。通常,XML禁止并保留以xml
开头的任何案例组合的属性名称。
但是,查看提供的XML文档,与xmlns
关联的值看起来不像URI引用,并且每个serialno
都有自己的xmlns
值,这种情况并不常见:必须为这些命名空间中的每一个提供单独的模式文件。这可能会指出这些字段或应该是id
字段或自定义字段而不是xmlns
字段。