我有一个XML 1.0文档,我需要使用XSLT 1.0文件进行转换。我需要转换的XML看起来像这样:
<commandBarData guid="f3016f3c-2847-4557-b61a-a2d05319cf18">
<menubar>
<modeData guid="76d73481-9076-44c9-821c-52de9408cce2">
<item guidRef="0f948c18-f326-40e5-9beb-2efc73803797"/>
<item guidRef="6c91d5ab-d648-4364-96fb-3e71bcfaf70d"/>
<item guidRef="71f8ffd6-46bd-43a3-8256-5412bc2d7741"/>
<item guidRef="ac291790-gf51-d4s1-f23x-dsf9dfb6fgf5"/>
</modeData>
</menubar>
</commandBarData>
我需要在元素<item guidRef="21c1f231-e03e-48e8-916a-d8790442b417"/>
<item guidRef="0f948c18-f326-40e5-9beb-2efc73803797"/>
所以列表看起来像这样:
<commandBarData guid="f3016f3c-2847-4557-b61a-a2d05319cf18">
<menubar>
<modeData guid="76d73481-9076-44c9-821c-52de9408cce2">
<item guidRef="0f948c18-f326-40e5-9beb-2efc73803797"/>
<item guidRef="21c1f231-e03e-48e8-916a-d8790442b417"/>
<item guidRef="6c91d5ab-d648-4364-96fb-3e71bcfaf70d"/>
<item guidRef="71f8ffd6-46bd-43a3-8256-5412bc2d7741"/>
<item guidRef="ac291790-gf51-d4s1-f23x-dsf9dfb6fgf5"/>
</modeData>
</menubar>
</commandBarData>
如何使用XSLT 1.0执行此操作?
我做了几次尝试,现在我的代码大部分都在工作。剩下的一个问题是如何在之后插入元素。以下代码的工作原理除了......
<xsl:template match="uiConfig/commandBars">
<xsl:copy>
<xsl:apply-templates select = "node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template
匹配= “uiConfig /命令栏/ commandBarData /菜单栏/ modeData /项目[@ guidRef = '0f948c18-f326-40e5-9beb-2efc73803797']” &GT;
它生成这个xml:
<item guidRef="0f948c18-f326-40e5-9beb-2efc73803797"><item guidRef="21c1f231-e03e-48e8-916a-d8790442b417" xmlns:frmwrk="Corel Framework Data" /></item>
<item guidRef="21c1f231-e03e-48e8-916a-d8790442b417" />
<item guidRef="6c91d5ab-d648-4364-96fb-3e71bcfaf70d" />
<item guidRef="71f8ffd6-46bd-43a3-8256-5412bc2d7741" />
<item guidRef="ac291790-gf51-d4s1-f23x-dsf9dfb6fgf5" />
如何在元素后追加它而不是作为孩子插入?
答案 0 :(得分:0)
此解决方案有效:
<xsl:template match="uiConfig/commandBars/commandBarData/menubar/modeData/item[@guidRef='0f948c18-f326-40e5-9beb-2efc73803797']">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
<item guidRef="21c1f231-e03e-48e8-916a-d8790442b417"/>
</xsl:template>