2011-12-16 3 views
2

XML 스키마가 포함 된 XML이 포함 된 XML 파일의 유효성을 검사해야합니다. 내부 XML의 정확성은 저에게 관심이 없습니다. 이러한 유형의 콘텐츠에 대해 XML 스키마에서 어떤 유형을 사용해야합니까? Simple xs:string가 작동하지 않습니다.XMLSchema에서 임베디드 XML 정의하기

+0

: string'를? –

+0

.net validator가 스마트하고 콘텐츠가 xml임을 인식합니다. 오류가 발생했습니다. "부모 요소의 콘텐츠 모델이 텍스트이기 때문에 요소 'xxx'에 자식 요소 'yyy'을 포함 할 수 없습니다." – 0xddr

+0

텍스트 ('xs : string') 콘텐츠와 함께 사용할 수있는 몇 가지 대안으로 내 대답이 업데이트되었습니다. –

답변

1

다른 XML 문서 내에 XML을 포함시키기위한 여러 가지 대안이 있습니다.

xs:any:

당신은 당신의 스키마 (link)에 xs:any 유형을 사용할 수 있습니다. 그러나 임베디드 XML (유효성을 검사하는 데 사용됨)에 대한 스키마를 포함해야합니다.

또는 xs:string는 하나가 CDATA 섹션에서 내부 XML을 포함하거나 모든 <& 문자를 이스케이프 경우 작동하도록 만들 수 있습니다.

CDATA 섹션 :

<InnerXml> 
    <![CDATA[ 
    <InnerXmlRoot> 
     <InnerXmlContent>One & Two</InnerXmlContent> 
    </InnerXmlRoot> 
    ]]> 
</InnerXml> 

이 접근 방식에주의해야 할 유일한 것은 내부 XML이 허용 된 내용이 ]]>를 포함 할 수 없습니다로 CDATA 섹션을 포함합니다 (XML specification 참조) 할 수 없다는 것입니다.

문자 이스케이프 : 당신이`XS를 사용하여 발생하는 어떤 문제

<InnerXml> 
    &lt;InnerXmlRoot> 
    &lt;InnerXmlContent>One &amp; Two&lt;/InnerXmlContent> 
    &lt;/InnerXmlRoot> 
</InnerXml> 
+0

문제는 내부 XML이 다를 수 있다는 것입니다. 나는 단지 그것에 대해 신경 쓰지 않는 validator를 만들고 싶습니다. – 0xddr

+0

CDATA를 사용한 솔루션은 거의 제대로 작동합니다 (일부 형식 문제는 해결할 수 있지만 간단하게 해결할 수 있음). 도와 주셔서 감사합니다. – 0xddr