Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/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
concat删除xml标记_Xml_Xslt - Fatal编程技术网

concat删除xml标记

concat删除xml标记,xml,xslt,Xml,Xslt,我试图使用XSL中的concat函数将一些数据连接在一起。大多数项都是简单的字符串值,但其中一项是一些XML的片段。我看到的是,当将数据连接在一起时,XML标记被删除。这是意料之中的事吗?有办法解决这个问题吗 下面是我的concat语句,我在其中加入了一个变量: <xsl:variable name="hashKeyString"><xsl:copy-of select="concat(14,1269,Wire,ABC,<tag1>123</tag1>,

我试图使用XSL中的concat函数将一些数据连接在一起。大多数项都是简单的字符串值,但其中一项是一些XML的片段。我看到的是,当将数据连接在一起时,XML标记被删除。这是意料之中的事吗?有办法解决这个问题吗

下面是我的concat语句,我在其中加入了一个变量:

<xsl:variable name="hashKeyString"><xsl:copy-of select="concat(14,1269,Wire,ABC,<tag1>123</tag1>,XYZ)"/></xsl:variable>

当我查看变量内容时,会看到“141269WireABC123XYZ”。标签不见了

如有任何帮助或见解,将不胜感激


更新:正如许多人指出的,这个例子并不好。在我匆忙地把它放进去的时候,我可能没有给出一个很好的例子。上例中列出的要连接的值实际上是变量中的数据。我的主要问题是其中一个变量包含XML。如果我查看变量内容,标签就在那里。在concat语句中使用变量后,标记不再存在。我正在寻找一种方法,将XML标记作为数据连接的一部分。在concat语句之后,我看到的基本上是过去的XML结果的“value of”。

奇怪的是,您希望在变量中包含混合内容,但如果确实需要,请尝试:

<xsl:value-of select="concat(14,1269,Wire,ABC)"/>
<tag1>123</tag1>
<xsl:value-of select="XYZ"/>

123

请注意,
concat(141269)
始终是
141269
,因此第一个逗号是多余的。

奇怪的是,您希望在变量中包含混合内容,但如果确实需要,请尝试:

<xsl:value-of select="concat(14,1269,Wire,ABC)"/>
<tag1>123</tag1>
<xsl:value-of select="XYZ"/>

123

请注意,
concat(141269)
始终是
141269
,因此第一个逗号是多余的。

虽然我怀疑您的实际任务是否涉及连接硬编码的值,但您可以通过将值放在引号中并用字符值替换有问题的实体来实现所需的结果:

<xsl:value-of select="concat('14','1269','Wire','ABC','&#60;tag1&#62;123&#60;/tag1&#62;','XYZ')" />


然而,这仅仅是因为它可以做到。。。您的实际任务肯定需要@michael提供的解决方案。

虽然我怀疑您的实际任务是否涉及连接硬编码的值,但您可以将您的值放在引号中,并用它们的字符值替换有问题的实体,从而获得所需的结果:

<xsl:value-of select="concat('14','1269','Wire','ABC','&#60;tag1&#62;123&#60;/tag1&#62;','XYZ')" />


然而,这仅仅是因为它可以做到。。。您的实际任务肯定需要一个类似于@michael的解决方案。

concat()
将字符串作为参数并返回字符串。您不能使用它来输出元素,您应该看到的结果是一个错误,因为unescaped
XSLT将XML树模型作为节点层次结构进行操作:它从未看到词汇XML标记。所以你的期望似乎是错误的。但是,您的示例可能不正确:它不是格式良好的XML,因此永远不能以这种形式执行。
concat()
将字符串作为参数并返回字符串。您不能使用它来输出元素,您应该看到的结果是一个错误,因为unescaped
XSLT将XML树模型作为节点层次结构进行操作:它从未看到词汇XML标记。所以你的期望似乎是错误的。但是,您的示例不可能是正确的:它不是格式良好的XML,因此永远不能以这种形式执行。我在我的原始帖子中添加了一个更新,可能会为您提供有用的信息。我的示例可能不足以完全解释我的问题。我的答案是一样的:
concat()
只接受字符串参数,并返回字符串。如果你想复制一个元素,请单独复制它,不要试图连接它。我在我的原始文章中添加了一个更新,可能会为你提供有用的信息。我的示例可能不足以完全解释我的问题。我的答案是一样的:
concat()
只接受字符串参数,并返回字符串。如果要复制元素,请单独复制它,不要尝试连接它。