0

这是正在处理的 XML

 <?xml version="1.0" encoding="UTF-8"?>
<javancss>
    <sourceFile name="D:\EM_Projects\javancssParser\src\old_code_complexity.xml"/>
    <compareFile name="D:\EM_Projects\javancssParser\src\new_code_complexity.xml"/>
    <summaryFile name="D:\EM_Projects\javancssParser\src\Summary.xml"/>
    <packages />
    <functions />
    <objects />
</javancss>

这是 XSLT 的一个片段

<center><table border="1" cellspacing="5">
<tr>
<th>File</th>
<th>Path</th>
<th>Link </th>
</tr>

<tr>
<td>sourceFile</td>
<td> <a> <xsl:value-of select="/javancss/sourceFile/@name" /> </a></td>
<td>  </td>
</tr>

<tr>
<td>compareFile </td>
<td><xsl:value-of select="/javancss/compareFile/@name" /> </td>
<td> </td>
</tr>

<tr>
<td>compareFile </td>
<td><xsl:value-of select="/javancss/compareFile/@name" /> </td>
<td> </td>
</tr>

</table>
</center>

我想要做的是获取路径(由每行中的第 2 列表示)并在第 3 列中放置一个指向它的超链接(在各自中,暂时为<td> </td>空白)。什么是相同的方法?

所有输入将不胜感激。

4

1 回答 1

0

以下 XSLT

<?xml version="1.0" encoding="utf-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>

    <xsl:template match="/">
        <center>
            <table border="1" cellspacing="5">
                <tr>
                    <th>File</th>
                    <th>Path</th>
                    <th>Link </th>
                </tr>

                <xsl:apply-templates/>
            </table>
        </center>       

    </xsl:template>

    <xsl:template match="javancss">
        <xsl:apply-templates mode="link-row" select="sourceFile"/>
        <xsl:apply-templates mode="link-row" select="compareFile"/>
        <xsl:apply-templates mode="link-row" select="summaryFile"/>
    </xsl:template>

    <xsl:template match="*" mode="link-row">
        <tr>
            <td><xsl:value-of select="name()"/></td>
            <td><xsl:value-of select="@name" /></td>
            <td>
                <a href="{@name}">link</a>
            </td>
        </tr>       
    </xsl:template>

</xsl:transform>

应用于给定的输入文档

<?xml version="1.0" encoding="UTF-8"?>
<javancss>
    <sourceFile name="D:\EM_Projects\javancssParser\src\old_code_complexity.xml"/>
    <compareFile name="D:\EM_Projects\javancssParser\src\new_code_complexity.xml"/>
    <summaryFile name="D:\EM_Projects\javancssParser\src\Summary.xml"/>
    <packages />
    <functions />
    <objects />
</javancss>

产生以下输出

<center>
    <table border="1" cellspacing="5">
        <tr>
            <th>File</th>
            <th>Path</th>
            <th>Link </th>
        </tr>
        <tr>
            <td>sourceFile</td>
            <td>D:\EM_Projects\javancssParser\src\old_code_complexity.xml</td>
            <td>
                <a href="D:\EM_Projects\javancssParser\src\old_code_complexity.xml">link</a>
            </td>
        </tr>
        <tr>
            <td>compareFile</td>
            <td>D:\EM_Projects\javancssParser\src\new_code_complexity.xml</td>
            <td>
                <a href="D:\EM_Projects\javancssParser\src\new_code_complexity.xml">link</a>
            </td>
        </tr>
        <tr>
            <td>summaryFile</td>
            <td>D:\EM_Projects\javancssParser\src\Summary.xml</td>
            <td>
                <a href="D:\EM_Projects\javancssParser\src\Summary.xml">link</a>
            </td>
        </tr>
    </table>
</center>

注意:

  • 您可能不希望您的表头位于用于数据行的同一模板中
  • 将上下文设置为感兴趣的节点使您的 XPath 表达式更短且更具可读性
  • 您可能指的是最后一项的 summaryFile
于 2013-04-30T08:18:16.853 回答