Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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将xml存储在属性中_Xml_Xslt_Xslt 1.0 - Fatal编程技术网

XSLT将xml存储在属性中

XSLT将xml存储在属性中,xml,xslt,xslt-1.0,Xml,Xslt,Xslt 1.0,我的xslt中有一个变量如下所示 <xsl:variable name="metadata"> <Metadata> <xsl:apply-templates select="..." /> </Metadata> </xsl:variable> 之后,我尝试将元数据xml作为xsl:属性添加到另一个节点。我试过的价值,副本的,它没有工作。当使用的副本时,我得到以下错误 <OtherNode&

我的xslt中有一个变量如下所示

<xsl:variable name="metadata">
    <Metadata>
        <xsl:apply-templates select="..." />
    </Metadata>
</xsl:variable>

之后,我尝试将元数据xml作为xsl:属性添加到另一个节点。我试过的价值,副本的,它没有工作。当使用的副本时,我得到以下错误

<OtherNode>
    <xsl:attribute name="someAttr">
        <!-- I tried these and neither worked -->
        <xsl:value-of select="$metadata" /> <!-- Empty -->
        <xsl:copy-of  select="$metadata" /> <!-- Error -->
    </xsl:attribute>
</OtherNode>

“元素”类型的项不能在“属性”类型的节点内构造

这很简单,但出于某种原因,我认为它会自动逃逸元素

顺便说一下,我正在使用XSLT1.0

有什么想法吗


谢谢

第一次尝试使用的值应该可以使用一点mod(使用xs:text),但至少应该返回不带元数据元素的apply templates调用的值。您确定apply templates select=“…”位实际上正在查找并返回某些内容吗

这项工作:

<xsl:variable name="metadata">
<xsl:text>&lt;Metadata></xsl:text>
    test
 <xsl:text>&lt;/Metadata></xsl:text>
</xsl:variable>


<xsl:template match="some-element">
  <xsl:element name="some-element">
    <xsl:attribute name="test"><xsl:value-of select="$metadata" /></xsl:attribute>
  </xsl:element>
</xsl:template>

元数据>
测试
/元数据>
输出如下所示:

 <some-element test="&lt;Metadata&gt;&#xA;        test&#xA;&lt;/Metadata&gt;">


似乎您在变量中捕获的不仅仅是文本,而是
节点()
节点集。您需要更改变量,以便只选择要查找的
text()

是的,在看到您的答案之前,我就是这么做的。我希望我不需要这样做,但是哦,好吧。谢谢没问题,绝对不是一个“酷”的解决方案,但有时仅仅完成它是最好的。完成后,继续讨论项目中的下一个问题/挑战:)如果您觉得这个答案很有用,它展示了如何将任何XML文档序列化为属性: