2016-08-08 9 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パーサによって解決され、serialno,msnおよびmsisdnが存在するデフォルト名前空間を宣言します。したがって、XMLスキーマは実際に属性の形でそれらを表示しません。一般に、XMLは、任意の組み合わせの場合、xmlで始まる属性名を禁止し、予約します。

ただし、提供されるXML文書を見て、xmlnsに関連付けられた値は、URI参照のように見ていない、とそれぞれserialnoはまれである、独自のxmlns値を、持っている:1はそれぞれに別々のスキーマファイルを提供しなければなりませんこれらの名前空間のこれは、xmlnsフィールドではなく、idフィールドまたはカスタムフィールドである必要があります。

+0

こんにちは、serialnoのxmlnsがid値である可能性があります。それは私が必要とする出力がxmlnsであることだけです。属性名を 'xmlns'から' xmlns1'(テスト用)に変更しようとしました。アプリケーションは受け入れました(msはExcelソースです)。データはExcelスプレッドシートからのものです。ありがとうございました –

+0

あなたのフィードバックのおかげで、Ryan、私は恐らく '' xmlns'属性の使い方が最悪で非標準的であることに気付いています。ユースケースの詳細を説明する資料はありますか? 'xmlns1'はアプリケーションによって拒否されないことが期待されます。これらの名前を予約するというアイデアは、W3Cは、将来xmlns1などのセマンティクスを指定する権利を将来確保することになります。 。 –

+0

非常に珍しい。私は実際には、ユースケースの詳細をあなたに提供することはできませんが、私の質問のxml出力に似た形式のXMLを作成するタスクが与えられました。データはExcelファイルから来るので、XSDを作成してExcelのxml関数にエクスポートを使用しようとしました。私は本当にxsdを初めて使っているので、誰かが自分の状況に遭遇してxsdの解決策が出てきたのか疑問に思っていました。ありがとう –