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将XML元素内容复制到另一个XML文件?_Xml_Xslt - Fatal编程技术网

如何使用xslt将XML元素内容复制到另一个XML文件?

如何使用xslt将XML元素内容复制到另一个XML文件?,xml,xslt,Xml,Xslt,我需要将一个xml文件中的一些数据复制到另一个xml文件中。我尝试过很多事情,但都没有成功 1.xml <head><meta name="charset" content="utf-8"/></head> 2.xml文件: <dc:identifier id="uuid">123456789</dc:identifier> 123456789 输出文件如下: <head> <meta nam

我需要将一个xml文件中的一些数据复制到另一个xml文件中。我尝试过很多事情,但都没有成功

1.xml

<head><meta name="charset" content="utf-8"/></head>

2.xml文件:

<dc:identifier id="uuid">123456789</dc:identifier>
123456789
输出文件如下:

  <head>
      <meta name="dtb:uid" content="123456789"/>
      <meta name="dtb:depth" content="1"/>
      <meta name="dtb:totalPageCount" content="0"/>
      <meta name="dtb:maxPageNumber" content="0"/>
   </head>

XSLT文件:

    <xsl:template match="html:head">
<head>
<meta name="dtb:uid" content="{html:meta[@name='dc:identifier']/@content}"/>
<meta name="dtb:depth" content="{max(//html:li/count(ancestor::html:li))+1}"/>
<xsl:variable name="totalPageCount" select="count(//html:nav[@epub:type='page-list']/html:ol/html:li)"/>
<meta name="dtb:totalPageCount" content="{$totalPageCount}"/>
<xsl:variable name="maxPageNumber" select="number((//html:nav[@epub:type='page-list']/html:ol/html:li)[last()])"/>
<meta name="dtb:maxPageNumber" content="{if (string($maxPageNumber)='NaN') then $totalPageCount else $maxPageNumber}"/>
<xsl:apply-templates select="html:meta[not(@name='dc:identifier')]"/>
</head>
</xsl:template>


有人知道怎么做吗?

假设共享XSLT代码应用于
3.xml
(未共享),您可以使用
document()
函数将
dc:identifier
的值从
2.xml
获取到XSLT代码中

请修改下面的XSLT代码

<meta name="dtb:uid" content="{html:meta[@name='dc:identifier']/@content}"/>



请确保在XSLT中正确映射了所有名称空间。

是否有2个XML文件,并希望将数据从一个XML复制到另一个XML?看起来您没有使用1.XML中的任何内容。你为什么要牵扯进来?你应该试着明确你的需求。我正在根据我们想要的定义所有的代码。。但我们需要“dc:identifier”内容。第一个xml中没有提到内容,因此我尝试从另一个文件导出。。如何导出内容。请让我知道第一个xml中没有相关元素的任何解决方案。我给出了第二个xml元素,它将被创建到第三个xml文件中。请更新详细解释需求的问题,否则就是猜谜游戏。另外,为所有3个xml提供所需输出的示例,以便解决方案提供商能够理解输入和输出之间的关系。。请更正名称空间前缀“dc”未声明的错误。发生错误。我在样式表中提到了名称空间“exclude result prefixes=“#all””名称空间声明应该是
xmlns:dc=”http://something.com“
where
something
将对应于XML中声明的任何名称空间。
排除结果前缀
用于不向输出XML中的元素添加前缀。请阅读更多有关XML名称空间的信息。
<meta name="dtb:uid" content="{document('2.xml')/dc:identifier}"/>