我有一个xml文档
<body>
<heading>Main Heading</heading>
<para>
<text>para 1</text>
</para>
<para>
<heading>heading 2</heading>
<text> para 2</text>
</para>
<para>
<heading>heading 3</heading>
<text>para 3</text>
</para>
</body>
Run Code Online (Sandbox Code Playgroud)
我想匹配第一个出现的标题元素并添加一些文本.我只想要第一次出现的标题和标题应该是para元素的子节点.
所以输出应该如下
<body>
<heading>Main Heading</heading>
<para>
<text>para 1</text>
</para>
<para>
<heading>**This is a first heading found** heading 2</heading>
<text> para 2</text>
</para>
<para>
<heading>heading 3</heading>
<text>para 3</text>
</para>
</body>
Run Code Online (Sandbox Code Playgroud)
任何提示如何开始是值得赞赏的.
这应该做你想要的:
para[heading][1]/heading[1]
Run Code Online (Sandbox Code Playgroud)
它将匹配第一个包含任意标题的第一个标题元素.
示例XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
</xsl:template>
<xsl:template match="para[heading][1]/heading[1]">
<xsl:copy>**First heading** <xsl:apply-templates select="@*|node()" /></xsl:copy>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
您的示例输出:
<body>
<heading>Main Heading</heading>
<para>
<text>para 1</text>
</para>
<para>
<heading>**First heading** heading 2</heading>
<text> para 2</text>
</para>
<para>
<heading>heading 3</heading>
<text>para 3</text>
</para>
</body>
Run Code Online (Sandbox Code Playgroud)
如果<para>XML中的其他元素可能只是直接嵌套在那里,<body>那么使用更具体的匹配表达式会更安全,即
/body/para[heading][1]/heading[1]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6551 次 |
| 最近记录: |