2014-07-11 4 views
0

템플릿을 사용하여 하나의 XSL 로직을 구현하려고합니다.적용 템플릿이 예상대로 작동하지 않습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<Test> 
<goal> 
    Books 
</goal> 
<secret> 
    <Test> 
     Noodles 
    </Test>   
</secret> 
</Test> 

예상 출력 :

<Output> 
<RESULT> 
    <Test> 
    <goal>Books</goal> 
    <secret> 
     <Test>Noodles</Test> 
    </secret> 
    </Test> 
</RESULT> 
<RESULT> 
    <Test>Noodles</Test> 
</RESULT> 
</Output> 

실제 출력 :

<Output> 
<RESULT> 
    <Test> 
    <goal>Books</goal> 
    <secret> 
     <Test>Noodles</Test> 
    </secret> 
    </Test> 
</RESULT> 
Books 
<RESULT> 
    <Test>Noodles</Test> 
</RESULT> 
Noodles 
</Output> 
모든 테스트 요소에 대해, 나는 하나 개의 상위 태그 "결과"

<xsl:stylesheet exclude-result-prefixes="xs" version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xsl:template match="Test"> 
    <RESULT> 
     <xsl:copy-of select="."/> 
    </RESULT> 
    <xsl:apply-templates select="node()"/> 
</xsl:template> 
</xsl:stylesheet> 

입력 XML을 추가해야합니다

추가 텍스트가 하나 있습니다. n 출력. 어떤 도움이 필요합니까?

답변

1

XSLT's built in rules 때문에 추가 텍스트가 출력됩니다.

이 템플릿을 추가하여 텍스트에 대한 규칙에서 내장을 대체 할 수 있습니다 : 당신은 그냥 xsl:copy-of 및/또는 xsl:value-of를 사용하는 경우

<xsl:template match="text()"/> 

이 잘 작동합니다. text() 출력 규칙을 기반으로하는 경우 재정의를 수정하거나 xsl:apply-templates에있는 select을 변경해야합니다 (이미 Sivaa Nethaji에서 제공 한 옵션 중 하나임).

+0

+1 XSLT 링크를 이용해 주셔서 감사합니다. 도움이됩니다. –

관련 문제