Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 在xsl中使用concat和的副本_Xml_Xslt - Fatal编程技术网

Xml 在xsl中使用concat和的副本

Xml 在xsl中使用concat和的副本,xml,xslt,Xml,Xslt,我有xsl代码和方法的副本,该方法按原样复制xml标记 我想用一个引号来表示这个值 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:foo="http://www.fo.org/&q

我有xsl代码和方法的副本,该方法按原样复制xml标记 我想用一个引号来表示这个值

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:foo="http://www.fo.org/" xmlns:bar="http://www.bar.org">
    <xsl:template match="/">
        <xsl:copy-of xml:id="id_94" select="concat('`',/TransmissionHeader ,'`')"/>
    </xsl:template>
</xsl:stylesheet>
但我希望输出是

`<TransmissionHeader>hello</TransmissionHeader>`
你好`
如何做到这一点?

这是一个有趣的用法。 我希望它需要node()类型的输入才能正常工作。 在您的例子中,您正在保存“嘿,为我复制这个字符串”,因为concat操作的返回类型是字符串。如果在需要字符串的位置输入node()类型值,它将始终将给定的xpath转换为xpath/text(),并只选择其中的文本。(仅凭经验,并非100%确定)

您的问题应该通过以下方式解决:

<xsl:copy-of select=". | @*"/>


的副本生成深度副本,因此其结构中的每个元素都将被复制。法线只是当前元素的一个副本。由于节点内的文本也被视为节点(),因此它也将复制它。

可以使用以下方法生成预期输出:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <xsl:text>'</xsl:text>
    <xsl:copy-of select="TransmissionHeader"/>
    <xsl:text>'</xsl:text>
</xsl:template>

</xsl:stylesheet>

'
'

但是,正如我在对您的问题的评论中所指出的,结果没有多大意义。

但是我仍然需要在xml标记中加上“`”,而这个没有解决问题。我尝试了什么是您的输出方法?如果是文本,那么为什么需要标签?如果是XML,那么为什么需要引号?
<xsl:copy-of select=". | @*"/>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <xsl:text>'</xsl:text>
    <xsl:copy-of select="TransmissionHeader"/>
    <xsl:text>'</xsl:text>
</xsl:template>

</xsl:stylesheet>