XSLT에서 추가 처리를 위해 XML 노드의 내용을 전달합니다.

XSLT에서 추가 처리를 위해 XML 노드의 내용을 전달합니다.

나는 Xpath를 사용하여 내용을 식별할 수 있을 만큼 충분한 규칙성을 갖고 있는 사람이 생성한 긴 XML 파일을 가지고 있습니다. HTML 테이블로 다시 포맷하려고 합니다.

소스 자료는 단지 시각적 효과를 위해 기술적으로 표 형식으로 되어 있습니다(먼저 시작하지 마세요). 문제가 있는 부분은 각 항목의 설명 섹션에 추가 처리를 위해 전달해야 하는 임의의 태그가 포함될 수 있다는 것입니다. 설명의 내용을 가져오고 적절하게 처리하는 방법을 파악하지 못했습니다.

원하는 결과를 얻기 위해 value-of 또는 copy-of를 사용하지 않았습니다. 나는 아마도 분명한 것을 놓치고있을 것입니다.

예시 문서:

<?xml version="1.0" encoding="UTF-8"?>
<manual>
    <body>
        <chapter>
            <table>
                <thead>
                    <row>
                        <entry>
                            <para>Some parameter name</para>
                        </entry>
                        <entry>
                            <para>1</para>
                        </entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry>
                            <para>Range</para>
                        </entry>
                        <entry>
                            <para>1–10</para>
                        </entry>
                    </row>
                    <row>
                        <entry>
                            <para>Description</para>
                        </entry>
                        <entry>
                            <para>Sets the type of process module.</para>
                            <para>There can be <emphasis>more arbitrary markup</emphasis> in here.</para>
                            <list>
                                <item>Even a list</item>
                            </list>
                        </entry>
                    </row>
                </tbody>
            </table>
            <!-- and so on -->
        </chapter>
    </body>
</manual>

나는 다음 XSLT 스니펫의 변형을 시도해 왔습니다.

        <xsl:for-each select="table"> 
        <tr>
            <!-- insert additional code here -->
            <td class="desc"> <xsl:value-of select="//tbody/row[2]/entry[2]/*"><xsl:apply-templates select="@*|node()" /></xsl:value-of> </td>
        </tr>
        </xsl:for-each> 

답변1

나는 그것을 지나치게 생각하고 있습니다. 아니면 충분히 고려되지 않았을 수도 있습니다.

<td class="desc">
   <xsl:apply-templates select="tgroup/tbody/row[2]/entry[2]/*" />
</td>

관련 정보