XML 스키마가 있고 여러 노드에서 일부 확장을 지원한다고 가정합니다. 확장은 이러한 노드 내에서 유효한 XML이어야합니다.알 수없는 요소가있는 XML 확장
나는 < 스키마에서 > 요소로 구현 될 수 있음을 알고 있습니다. 그러나 내 XML 스키마에서 내 스키마를 사용하려면 다른 XSD의 노드 만 사용하면됩니다. 따라서 런타임에 확장의 스키마를 지정하고 확장 스키마에 대해이 확장의 유효성을 검사 할 수 있습니다.
<xs:element name="notes" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any namespace="http://www.w3.org/1999/xhtml"
minOccurs="0" maxOccurs="unbounded"
processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:element>
가 지금은 (초보자 I'am) 예를 들어 내 XML이 스키마를 지정하려면,이 같은 :
<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="myschema.xsd">
<bar>
<extension>
<html namespace="http://www.w3.org/1999/xhtml">
<body>Hello, World!</body>
</html>
</extension>
</bar>
</foo>
다음 예제는 정적 확장 스키마를 사용
가장 좋은 방법은 무엇입니까? 이상 적으로 필자는 필자가 XML의 확장 노드에서 사용하는 스키마 목록을 내 XML에 포함하려고합니다.
감사합니다!
== 편집, 자세한 설명 : ==
나는 특정 노드에서 사용자 정의 XML 데이터를 지원하고자합니다. 내 "마스터"스키마를 작성하는 동안 이러한 확장 스키마를 알지 못합니다.
내 XSD의 다음 조각 지정한 :
<xs:element name="extension">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##other" processContents="strict"/>
</xs:sequence>
</xs:complexType>
</xs:element>
을 다음과 같은 XML 사용하려면 : < body2가 유효하지 않기 때문에
<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test.xsd" >
<bar>
<extension>
<html xmlns="http://www.w3.org/1999/xhtml">
<body2>Hello, world!</body2>
</html>
</extension>
</bar>
</foo>
지금 내가 파서 오류 싶어를 XHTML 요소. 그러나 XMLSpy 파서는 이미 유효하지 않은 < html> 요소에 대해 불평하고 있습니다.
나는 실수를 볼 수 없다! XMLSpy는 어리 석고 네임 스페이스를 바꾸지 않을 수 있습니다. 그러나 ... body2 그 시점에서 잘못된 요소입니다! 시체를 가져 가면 어떡하지? –
내 편집을 참조하십시오. XMLSpy는 html 요소를 거부하는 것이 옳습니다. 스키마를 가져올 위치를 지정하지 않았습니다. –