使用XSLT从XML节点检索文本
如果这似乎是一个非常基本的问题,我很抱歉,但我真的(我的意思是真的)非常感谢能得到的任何帮助。我只是想做以下事情:使用XSLT从XML节点检索文本,xml,xslt,Xml,Xslt,如果这似乎是一个非常基本的问题,我很抱歉,但我真的(我的意思是真的)非常感谢能得到的任何帮助。我只是想做以下事情: 1.将自动关闭替换为 2.从“第二个节点”抓取文本 3.将该文本存储在变量中 4.将该文本放入新的“第七个节点”中。 我已经完成了步骤1,但似乎无法从所需元素中检索必要的信息。我在下面介绍了三个示例以及我的XSLT。我想关键问题是存储“Second_node”的文本内容并将其放置在新元素中。通过添加信息,我使用Saxon 6.5进行转换。如果提供的信息不完整,请告诉我 谢谢大家!
1.将自动关闭替换为
2.从“第二个节点”抓取文本
3.将该文本存储在变量中
4.将该文本放入新的“第七个节点”中。
我已经完成了步骤1,但似乎无法从所需元素中检索必要的信息。我在下面介绍了三个示例以及我的XSLT。我想关键问题是存储“Second_node”的文本内容并将其放置在新元素中。通过添加信息,我使用Saxon 6.5进行转换。如果提供的信息不完整,请告诉我 谢谢大家! 源XML:
<firstnode>
<Second_node>text for second node</Second_node>
<Third_node>
<Fourth_node>
<Fifth_node>text for fifth node</Fifth_node>
<Sixth_node>text for sixth node</Sixth_node>
<Seventh_node />
</Fourth_node>
</Third_node>
</firstnode>
第二个节点的文本
第五节点的文本
第六个节点的文本
到目前为止,我所拥有的:
<firstnode>
<Second_node>text for second node</Second_node>
<Third_node>
<Fourth_node>
<Fifth_node>text for fifth node</Fifth_node>
<Sixth_node>text for sixth node</Sixth_node>
<Seventh_node></Seventh_node>
</Fourth_node>
</Third_node>
</firstnode>
第二个节点的文本
第五节点的文本
第六个节点的文本
我需要的是:
<firstnode>
<Second_node>text for second node</Second_node>
<Third_node>
<Fourth_node>
<Fifth_node>text for fifth node</Fifth_node>
<Sixth_node>text for sixth node</Sixth_node>
<Seventh_node>text for second node</Seventh_node>
</Fourth_node>
</Third_node>
</firstnode>
第二个节点的文本
第五节点的文本
第六个节点的文本
第二个节点的文本
到目前为止,我的XSLT:
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Seventh_node">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<xsl:text>text for second node</xsl:text>
</xsl:copy>
</xsl:template>
第二个节点的文本
您可以尝试将第二个节点中的文本放入一个变量,然后使用该变量将该文本进一步放入第七个节点中
<xsl:variable name="VAR_SecNode">
<xsl:value-of select="Second_node"/>
</xsl:variable>
...
<Seventh_node><xsl:value-of select="$VAR_SecNode" /></Seventh_node>
...
...
...
您可以将第二个模板更新为以下内容:
<xsl:template match="Seventh_node/text()">
<xsl:text>text for second node</xsl:text>
</xsl:template>
第二个节点的文本
这将只匹配
第七个节点的文本
,并将其替换为
元素中的任何内容 我认为不需要变量。试试这个:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Seventh_node">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:value-of select="//Second_node"/>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
将复制第七个节点的属性。
将复制第七个\u节点的子节点。如果您不需要,请删除这行。我想您希望
在那里……这很有效!我非常感谢你的帮助。真的,谢谢你帮我保住了工作。