2017-12-19 20 views
0

XSL 3.0을 사용하여 XML 문서를 복사하고 특정 정보를 찾아서 대체합니다. 모든이를 사용하여 잘 작동 :xi 방지 : 처리 포함

<xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="//foo"> 
...some action on foo here... 
</xsl:template> 

그러나, 원래 xml 파일 <xi:include/>에 매우 큰 xml 파일을 가지고 있으며, 복사 프로세스는 '개방'그 xml 파일 및 복사 '전체'또는 '확장'에 삽입되어 .

처리하지 않고 원래 <xi:include/>을 보존하고 싶습니다.

XSLT 파일에서 <xi:include/>을 처리하지 말고 요소와 특성을 복사하는 방법은 무엇입니까?

감사합니다.

+0

내가 사용하는 XSLT 프로세서를 아는 것이 유용 할 것입니다. – zx485

+0

Oxygen 및 명령 줄 (Mac OS)에서 Saxon HE 9.6을 사용하고 있습니다. – idjet

+0

입력 된 문서를 파싱 할 때 이미 발생하는 참조 된 파일을 여는 프로세스가 복사가 아닌지 의심 스럽습니다. 명령 행에서 Saxon에 관해서는, XInclude 사용을'-xi : (on | off)'https://www.saxonica.com/html/documentation9.6/using-xsl/commandline으로 온/오프 토글 할 수있다. html –

답변

1

xi:include 요소는 XSLT 프로세서에 의해 확장되지 않지만 XSLT 프로세서에 대한 입력 역할을하는 트리를 작성하는 과정에서 확장 될 수 있습니다. 일반적으로이 트리를 준비하는 것은 XML 파서입니다. 일부 XML 파서 (전부는 아님)는 구문 분석 중에 xi:include 지시문을 확장 할 수 있습니다. Saxon이 구문 분석 프로세스를 제어하는 ​​경우 -xi 스위치 (또는 다양한 API의 해당 항목)를 사용하여 지원되는 경우 구문 분석기에서 xi:include을 처리 할 수 ​​있습니다. 이 스위치는 기본적으로 항상 꺼져 있지만 xi:include 처리가 다른 방식으로 요청 된 경우 (Saxon에 알려지지 않음) Saxon은이 스위치를 끄지 않습니다. 예를 들어 Saxon 입력으로 SAXSource을 입력하면 SAXSource 개체에서 XML 파서 (XMLReader)를 구성하는 방법에 따라 달라집니다.

oXygen 또는 Stylus Studio와 같은 타사 응용 프로그램에서 Saxon을 실행하는 경우 해당 환경에서 구문 분석 프로세스를 제어하는 ​​방법을 조사해야합니다.