嘿,我遇到了XML文件的问题。 我在这里得到了一些帮助,但在那之后我又遇到了另一个问题。我试图选择XML文件中的第一个元素并将其复制到另一个位置。
这是原作:
<products>
<product>
<OrderingInfo>
<item name="Part No.">12345 (text)</item>
<item name="Part No.">12345IP (text)</item>
</OrderingInfo>
<varitems>
</varitems>
</product>
<product>
<OrderingInfo>
<item name="Part No.">001 (text)</item>
<item name="Part No.">002 (text)</item>
</OrderingInfo>
<varitems>
</varitems>
</product>
</products>
期望的输出:
<products>
<product>
<OrderingInfo>
<item name="Part No.">12345 (text)</item>
<item name="Part No.">12345IP (text)</item>
</OrderingInfo>
<varitems>
<item>
<varno>14205</varno>
<text>text</text>
</item>
<item>
<varno>14205</varno>
<text>text</text>
</item>
</varitems>
</product>
<product>
<OrderingInfo>
<item name="Part No.">001</item>
<item name="Part No.">002</item>
</OrderingInfo>
<varitems>
<item>
<varno>001</varno>
<text>text</text>
</item>
<item>
<varno>001</varno>
<text>text</text>
</item>
</varitems>
</product>
</products>
我用它来嘲笑
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:template>
<xsl:template match="OrderingInfo">
<xsl:copy-of select="."/>
<varitems></varitems>
</xsl:template>
<xsl:template match="varitems">
<xsl:copy>
<xsl:for-each select="ancestor::product/OrderingInfo/item">
<item>
<varno><xsl:value-of select="/*/product/OrderingInfo/item[1]"/></partno>
<vartitle><xsl:value-of select="normalize-space(translate(substring-after(current(),' '),'()',''))"/></vartitle>
</item>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我尝试选择包含/*/product/OrderingInformation/item[1]
部分的项目
但它始终从第一个产品
答案 0 :(得分:0)
我认为您正在寻找的表达式是这样的(因此,请在当前节点的父节点下获取第一个{
// ...,
"workbench.colorCustomizations": {
"editorError.border": "#ca2323a4",
"editorError.foreground": "#ffffffb7"
}
}
。)
item