如何使用 XSL 查找准确的 xml 内容
how to find exact xml content using XSL
我希望你能帮助我解决我的问题
我需要获取我的字符串所在节点的local-name()
var str="the world is complex";
<firsttag>The world is complex.</firsttag>
<secondtag>The world is complex</secondtag>
...
这是我的代码:
<xsl:if test="$str">
<xsl:variable name="nodename">
<xsl:value-of select="local-name([contains(.,$str)])"/>
</xsl:variable>
</xsl:if>
但是这个 returns <firsttag>
的本地名称,即使它包含一个点 (.),我被告知我可以使用 substring-before
和 [=16= 进行验证] 来获取节点之前和之后没有任何内容的确切字符串,但我担心如果我在不同节点中有重复的内容,这可能会产生相同的结果,但这不是我现在关心的问题。
你的问题不是很清楚。给定以下测试输入:
<input>
<firsttag>The world is complex.</firsttag>
<secondtag>The world is complex</secondtag>
</input>
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:param name="str" select="'The world is complex'"/>
<xsl:template match="/">
<output>
<xsl:for-each select="//*[.=$str]">
<elem-name>
<xsl:value-of select="name()"/>
</elem-name>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>
将return:
<?xml version="1.0" encoding="utf-8"?>
<output>
<elem-name>secondtag</elem-name>
</output>
如果您可以确定只有一个输入元素(最多)符合条件(或者如果您只对 第一个 元素的名称感兴趣), 你可以将代码缩减为:
<xsl:template match="/">
<output>
<xsl:value-of select="name(//*[.=$str])"/>
</output>
</xsl:template>
获得:
<?xml version="1.0" encoding="utf-8"?>
<output>secondtag</output>
注意XML区分大小写; "the world is complex" 的字符串参数 不会 匹配包含 "The world is complex".
的元素
我希望你能帮助我解决我的问题
我需要获取我的字符串所在节点的local-name()
var str="the world is complex";
<firsttag>The world is complex.</firsttag>
<secondtag>The world is complex</secondtag>
...
这是我的代码:
<xsl:if test="$str">
<xsl:variable name="nodename">
<xsl:value-of select="local-name([contains(.,$str)])"/>
</xsl:variable>
</xsl:if>
但是这个 returns <firsttag>
的本地名称,即使它包含一个点 (.),我被告知我可以使用 substring-before
和 [=16= 进行验证] 来获取节点之前和之后没有任何内容的确切字符串,但我担心如果我在不同节点中有重复的内容,这可能会产生相同的结果,但这不是我现在关心的问题。
你的问题不是很清楚。给定以下测试输入:
<input>
<firsttag>The world is complex.</firsttag>
<secondtag>The world is complex</secondtag>
</input>
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:param name="str" select="'The world is complex'"/>
<xsl:template match="/">
<output>
<xsl:for-each select="//*[.=$str]">
<elem-name>
<xsl:value-of select="name()"/>
</elem-name>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>
将return:
<?xml version="1.0" encoding="utf-8"?>
<output>
<elem-name>secondtag</elem-name>
</output>
如果您可以确定只有一个输入元素(最多)符合条件(或者如果您只对 第一个 元素的名称感兴趣), 你可以将代码缩减为:
<xsl:template match="/">
<output>
<xsl:value-of select="name(//*[.=$str])"/>
</output>
</xsl:template>
获得:
<?xml version="1.0" encoding="utf-8"?>
<output>secondtag</output>
注意XML区分大小写; "the world is complex" 的字符串参数 不会 匹配包含 "The world is complex".
的元素