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
Xml XPath根据XSL转换的属性多次选择节点_Xml_Xslt_Xpath - Fatal编程技术网

Xml XPath根据XSL转换的属性多次选择节点

Xml XPath根据XSL转换的属性多次选择节点,xml,xslt,xpath,Xml,Xslt,Xpath,我有一个这样的节点: <foo my:first="yes" my:second="no">text</foo> 因此,预期结果将是: <bar name="first" value="yes">text</bar> <bar name="second" value="no">text</bar> 文本 文本 我怎样才能做到这一点呢?在我看来,您似乎只是想处理属性节点,例如 <xsl:template match

我有一个这样的节点:

<foo my:first="yes" my:second="no">text</foo>
因此,预期结果将是:

<bar name="first" value="yes">text</bar>
<bar name="second" value="no">text</bar>
文本
文本

我怎样才能做到这一点呢?

在我看来,您似乎只是想处理属性节点,例如

<xsl:template match="*/@my:*">
  <bar name="{local-name()}" value="{.}">
    <xsl:value-of select=".."/>
  </bar>
</xsl:template>

然后

<xsl:template match="*[@my:*]">
  <xsl:apply-templates select="@my:*"/>
</xsl:template>


你可能是对的!感谢您的帮助,我将尝试一下。如何在属性模板中选择节点的内部文本?我需要将元素的内容放在
标记之间。我编辑了第一个模板,因为在我的第一次回答尝试中,我忽略了您也要输出元素内容。
<bar name="first" value="yes">text</bar>
<bar name="second" value="no">text</bar>
<xsl:template match="*/@my:*">
  <bar name="{local-name()}" value="{.}">
    <xsl:value-of select=".."/>
  </bar>
</xsl:template>
<xsl:template match="*[@my:*]">
  <xsl:apply-templates select="@my:*"/>
</xsl:template>