2010-01-15 2 views

답변

4

XPath는 특별한 이스케이프 시퀀스를 정의하지 않습니다. XPath가 XSLT 내에서 사용되는 경우 (예 : XSLT 문서의 요소 속성), 이스케이프 시퀀스는 스타일 시트를 읽는 XML 프로세서에 의해 처리됩니다. 라이브러리를 통해 XML이 아닌 컨텍스트 (예 : Java 또는 C# 또는 다른 언어)에서 XPath를 사용하고 XPath 쿼리가 해당 언어의 문자열 리터럴이면 언어 자체와는 별도로 이스케이프 처리를 수행하지 않습니다 보통 그렇습니다. 이 C# 또는 자바의 경우

이 작동합니다 : XSLT는 문자 엔티티를 정의하지 않는 XML을 사용하기 때문에 보조 노트로

String xpath = "//h3[text()='Foo \u8250 Bar']"; 
... 

, 그것은 어느 XSLT에서 작동하지 않을 것입니다 › - <, >, ", '& 만 정의합니다. 艐을 사용하거나 XSLT 스타일 시트의 DOCTYPE 선언에서 문자 엔티티를 직접 정의해야합니다.

1

:

XPath는 반대로 당신이 (내부 쿼리를 사용하고 있으므로하지 않는 ... 오히려 그 표면 구문

보다, XML 문서의 추상적, 논리적 구조에서 작동 "엔티티를 포함하는 DTD가있는 XSLT (가능하다면 XSLT 전문가와는 거리가 멀다.))를 해석하는 언어)를 사용하면 작동하지 않을 것입니다.

XPath를 사용하는 언어로 인식되는 리터럴 문자 또는 이스케이프 시퀀스를 사용하십시오.

관련 문제