2016-08-08 3 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, msnmsisdn이있는 기본 네임 스페이스를 선언하도록 해결되었습니다. 따라서 XML 스키마는 특성의 형태로 실제로 볼 수 없습니다. 일반적으로 XML은 어떤 경우에도 xml으로 시작하는 속성 이름을 금지하고 보유합니다.

그러나 제공되는 XML 문서를보고, xmlns와 관련된 값은 URI 참조처럼 보이지 않으며, 각 serialno는 드물다 자신의 xmlns 값을 가지고 하나는 각각에 대해 별도의 스키마 파일을 제공 할 것입니다 이 네임 스페이스 중. 이는 xmlns 필드가 아닌 id 필드 또는 사용자 정의 필드이거나 그럴 수 있음을 나타냅니다.

+0

안녕하세요, serialno의 xmlns가 id 값이라는 것이 맞을 수도 있습니다. 필요한 출력은 xmlns 여야합니다. 속성 이름을'xmlns'에서'xmlns1' (테스트 용)으로 변경하고 응용 프로그램을 수락하려고했습니다 (ms 엑셀 소스). 데이터는 Excel 스프레드 시트에서 가져온 것입니다. 감사합니다 –

+0

당신의 의견을 보내 주셔서 감사합니다, Ryan, 이건 비정상적인 것 같아요, 비표준 최악의 경우,'xmlns' 속성을 사용하는 것 같습니다. 유스 케이스의 특성을 설명하는 문서가 있습니까? 'xmlns1'은 응용 프로그램에 의해 거부되지 않을 것으로 예상됩니다. 이 이름들을 예약한다는 아이디어는 (현재는있을 수 없지만) W3C는 장래에'xmlns1'이나 다른 것들에 대한 의미를 명시 할 권리를 보유하고있다. . –

+0

매우 드문 경우입니다. 내 질문에 xml 출력과 비슷한 형식의 XML을 작성하는 작업 이외에는 실제로 사용 사례에 대한 세부 정보를 제공 할 수 없습니다. 데이터는 Excel 파일에서 가져올 것이므로 XSD를 작성하여 Excel의 XML 함수에 내보내기를 사용하려고했습니다. 나는 정말 xsd에 익숙하지 않았기 때문에 누군가 내 상황에 부딪쳤을 지 궁금해서 xsd에 대한 해결책을 찾았다. 감사 –

관련 문제