Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 如何使用XSL基于字符串值获取xml节点?_Xslt_Xslt 1.0 - Fatal编程技术网

Xslt 如何使用XSL基于字符串值获取xml节点?

Xslt 如何使用XSL基于字符串值获取xml节点?,xslt,xslt-1.0,Xslt,Xslt 1.0,我有一个字符串变量,它有多个节点引用号,用逗号分隔,例如:test#u variable=#id1、#id147、#id168 现在,我需要获取上面字符串变量的引用号在变量中匹配的所有xml节点 因此,我只显示那些符合上述条件的节点的数据 我搞不懂怎么翻出来,请帮忙 <xsl:variable name="test_variable" select="substring-after($vMinMaxVar,'|')"/> <xsl:message><xsl:text

我有一个字符串变量,它有多个节点引用号,用逗号分隔,例如:test#u variable=#id1、#id147、#id168

现在,我需要获取上面字符串变量的引用号在变量中匹配的所有xml节点

因此,我只显示那些符合上述条件的节点的数据

我搞不懂怎么翻出来,请帮忙

<xsl:variable name="test_variable" select="substring-after($vMinMaxVar,'|')"/>
<xsl:message><xsl:text>PrintingTesting_Variable:-</xsl:text><xsl:value-of select="$test_variable"/></xsl:message>

PrintingTesting_变量:-
所以如果我打印上面这行。我会有一个价值,即。 PrintingTesting_变量:-#id1、#id147、#id168(此输出可以是单值输出,也可以是带逗号的多值输出)

现在我需要回到xml,只过滤xml节点,它的标记中只有这些引用号

供参考的Xml内容示例:-
考虑以下示例:

XML(格式正确!!!)


XSLT1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="http://www.sample.org/Schemas/xyzwSchema"
exclude-result-prefixes="ns">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:param name="references">#id1,#id147,#id168</xsl:param>

<xsl:template match="/ns:Sample">
    <xsl:copy>
        <xsl:copy-of select="ns:Process[contains(concat($references, ','), concat(@instancedRef, ','))]"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

#id1、#id147、#id168
结果

<?xml version="1.0" encoding="UTF-8"?>
<Sample xmlns="http://www.sample.org/Schemas/xyzwSchema">
  <Process id="id234" instancedRef="#id1">
    <UserData id="id41"/>
    <UserValue title="Mfg0allocated_time" type="real" value="23.4"/>
  </Process>
  <Process id="id236" instancedRef="#id147">
    <UserData id="id43"/>
    <UserValue title="Mfg0allocated_time" type="real" value="23.4"/>
  </Process>
  <Process id="id237" instancedRef="#id168">
    <UserData id="id44"/>
    <UserValue title="Mfg0allocated_time" type="real" value="23.4"/>
  </Process>
</Sample>


您真的只限于XSLT 1吗?如果是的话,您到底使用哪个XSLT1处理器?它是否支持一个扩展函数来标记您的字符串,比如?您的XML缺少
UserData
的结束标记“我希望一个变量包含所有这些FilterRD节点的输出。”没有这样的事情。处理结束时,变量不再存在。输出必须是一个文档(XML、HTML或文本)。嗨,Micheal,非常感谢你的建议,它真的对我有用。
<?xml version="1.0" encoding="UTF-8"?>
<Sample xmlns="http://www.sample.org/Schemas/xyzwSchema">
  <Process id="id234" instancedRef="#id1">
    <UserData id="id41"/>
    <UserValue title="Mfg0allocated_time" type="real" value="23.4"/>
  </Process>
  <Process id="id236" instancedRef="#id147">
    <UserData id="id43"/>
    <UserValue title="Mfg0allocated_time" type="real" value="23.4"/>
  </Process>
  <Process id="id237" instancedRef="#id168">
    <UserData id="id44"/>
    <UserValue title="Mfg0allocated_time" type="real" value="23.4"/>
  </Process>
</Sample>