2010-11-19 5 views
5

다른 XML 파일 집합의 내용을 찾기위한 값이 XPath 인 특성을 가진 XML 파일이 있습니다.XPath 값에 대한 XML 스키마 유형 정의?

예 :

<?xml version="1.0" encoding="utf-8"?> 
<Root> 
    <IterestingNode Value="/html/head/title"/> 
</Root> 

이 파일

은 XSD에 대해 유효성을 검사 할 수 있습니다. 현재는 속성의 값이 문자열인지 확인하지만 속성이 유효한 XPath 값인지 확인하고 싶습니다.

XPath 값에 대한 XML 스키마 정의가 있습니까?

+1

Perez : RegExp 및 XPath 문법이 일치하지 않습니다. –

답변

3

XPATH 식에 대한 XSD 데이터 형식이 없습니다.

가장 좋은 방법은 xsd:restrictionxsd:pattern을 사용하고 정규식 패턴을 사용하여 문자열 값이 XPATH 식인지 확인하는 것입니다. 이 같은

뭔가 :

<xsd:simpleType name="XPathValueType"> 
    <xsd:restriction base="xsd:string"> 
    <xsd:pattern value="**PUT IN SOME REGEX PATTERN TO VERIFY THE STRING IS AN XPATH EXPRESSION**"/> 
    </xsd:restriction> 
</xsd:simpleType> 

나는 주어진 문자열이 기준에 XPATH 표현임을 확인할 것 정규식 패턴을 잘 모르는 것 같아요. 당신은 몇 가지 패턴으로 된 anyURI을 사용할 수

0

xpath는 XML이 아니라 데이터입니다. 사양은 다음과 같습니다. ht tp://www.w3.org/TR/xpath/

+0

왜 안 되니? xpath 표현식도 "정보"입니까? :) – redben

+0

xpath는 XML 형식으로 표현되지 않으므로 XML 스키마가 없습니다. –

+0

여전히 올바른 xpath 구문과 일치하는 패턴을 구현할 수 있습니까? redben

0

XPointer

하는 XPointer 예 :

<?xml version="1.0" encoding="utf-8"?> 
<Root> 
    <IterestingNode Value="doc.xml#xpointer(/html/head/title)"/> 
</Root> 
0

궁극적으로 redben에서 제공하는 대답이 주장 실제로 내가 본 정답은 (, 그리고 내가 믿는 xslt 을 xsd로 표현할 수 없습니다.) x30 표현식에 대해 다음 xsd 정의가있는 xslt xsd에주의를 기울여야합니다.

<xs:simpleType name="expression"> 
    <xs:annotation> 
     <xs:documentation> 
      An XPath 2.0 expression. 
     </xs:documentation> 
    </xs:annotation> 
    <xs:restriction base="xs:token"> 
     <xs:pattern value=".+"/> 
    </xs:restriction> 
</xs:simpleType> 

이 질문은 오랫동안 활발하지 않았지만 나는이 주제에 대해 다른 사람에게 도움이 될 것이라고 생각했습니다.