属性的XSLT副本留空
我试图修改现有XSLT,将输入XML中文件节点的originalfilename属性作为输出XML中反馈的文件属性。我想我误解了声明的副本,我将非常感谢任何帮助。此时,我想要的输出在反馈节点上显示一个空文件属性 XSLT属性的XSLT副本留空,xslt,Xslt,我试图修改现有XSLT,将输入XML中文件节点的originalfilename属性作为输出XML中反馈的文件属性。我想我误解了声明的副本,我将非常感谢任何帮助。此时,我想要的输出在反馈节点上显示一个空文件属性 XSLT 输入 先进材料和工艺(荣誉理学硕士) 先进材料与工艺(理学硕士) [ic14epub 20.01.2015 09:28:43]“荣誉”被取消(据我所知,关于这一点的讨论仍在进行中) 期望输出 [ic14epub 20.01.2015 09:28:43]“荣誉”被取消(据
输入
先进材料和工艺(荣誉理学硕士)
先进材料与工艺(理学硕士)
[ic14epub 20.01.2015 09:28:43]“荣誉”被取消(据我所知,关于这一点的讨论仍在进行中)
期望输出
[ic14epub 20.01.2015 09:28:43]“荣誉”被取消(据我所知,关于这一点的讨论仍在进行中)
先进材料和工艺(荣誉理学硕士)
先进材料与工艺(理学硕士)
只需在
中的文件
之前添加一个/
,即可获得所需的输出
但是,我建议使用
<xsl:value-of select="../../../@originalfilename"/>
而不是绝对路径,因此如果您有更多的文件,它仍然可以工作。您想要第一个
祖先的@originalfilename
<xsl:template match="Comment">
<feedback
id="{count(preceding::Comments)+1}"
file="{ancestor::file[1]/@originalfilename}"
>
<xsl:value-of select="." />
</feedback>
</xsl:template>
请注意属性值模板(大括号)。它们可以节省大量的输入。感谢没有使用绝对路径解决了问题,但是我接受了Tomalak的答案,因为对属性值模板的引用是一个有用的学习点。您是否迭代文件/文件/分段对,因为可能有多个?如果有多个,是否希望每次都有相同的源和目标输出?
<feedback id="1" file="C:\Users\A\Documents\Studio 2014\Projects\15_002_\de-DE\master\advanced-materials-and-processes-msc-hons.xml">[ic14epub 20.01.2015 09:28:43] 'hons' taken out (discussion of this still ongoing as far as I'm aware)</feedback>
<source>Advanced Materials and Processes (M.Sc.hons.)</source>
<target>Advanced Materials and Processes (MSc)</target>
<xsl:value-of select="/files/file/@originalfilename"/>
<xsl:value-of select="../../../@originalfilename"/>
<xsl:template match="Comment">
<feedback
id="{count(preceding::Comments)+1}"
file="{ancestor::file[1]/@originalfilename}"
>
<xsl:value-of select="." />
</feedback>
</xsl:template>