2016-08-08 35 views
0

我想问一下如何将xmlns属性添加到xsd上的元素。更改xmlns中每个元素的xmlns值

输出应与此类似:

<?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

xmlns属性不是真正的属性。它们由XML解析器解析,以声明serialnomsnmsisdn所在的默认名称空间。因此,XML Schema实际上并没有以属性的形式看到它们。一般情况下,XML禁止并保留以任何组合形式以xml开头的属性名称。

然而,看着提供的XML文档,与xmlns关联的值并不像URI引用,每个serialno都有自己xmlns价值,这是罕见的:一个人必须要为每一个单独的模式文件这些命名空间。这可能指出这些是或应该是id字段或自定义字段而不是xmlns字段。

+0

嗨,这可能是真的,serialno中的xmlns是一个id值。这只是我需要的输出应该是xmlns。我尝试将属性名称从'xmlns'更改为'xmlns1'(用于测试),并且接受的应用程序(ms excel源代码)。数据虽然来自Excel电子表格。谢谢 –

+0

感谢您的反馈,Ryan,我认为这看起来像是最不寻常的,最坏的情况是非标准,使用'xmlns'属性。是否有任何文档解释您的用例的具体内容?预计'xmlns1'不会被应用程序拒绝。保留这些名字的想法是(即使现在变得不太可能),W3C保留在将来为'xmlns1'或其他指定语义的权利,就像它为'xmlns'所做的一样,这可能会破坏任何现有的用途。 –

+0

的确很不寻常。我真的不能为您提供用例的详细信息,但除了我被赋予创建xml的任务外,其格式类似于我的问题中的xml输出。数据将来自excel文件,因此我尝试通过创建XSD来使用excel的导出到xml函数。我真的很陌生,所以我想知道是否有人遇到我的情况,并提出了一个解决方案的XSD。谢谢 –