本文介绍了XSLT - 不得复制节点值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用 XSLT 转换一些 xmi 文件.一切正常,但我不明白为什么我的模板packagedElement"复制了 </ownedComment><packagedElement xmi:type="uml:Stereotype" xmi:id="enum" name="enum"/>...</uml:个人资料><uml:Profile xmi:version="2.1" <ownedComment xmi:type="uml:Comment" xmi:id="comment01" annotatedElement="8C9E6706-8"><body>EAUML 版本:1.0</body></ownedComment>...</uml:个人资料></个人资料></xmi:扩展></xmi:XMI>

XSLT 文件( 中的代码与我的问题无关):

输出:

解决方案

你看到的是 内置模板规则 应用于未与您的任何模板显式匹配的节点.

要解决此问题,请添加一个模板以防止默认情况下复制文本节点:

或者 - 最好,恕我直言 - 更有选择性地应用模板.

I want to transform some xmi files using XSLT. Everything works fine, but I do not understand why the <body> tag values "Version 1.0" and "EAUML Version:1.0" are copied by my template "packagedElement" (see output).

xmi File:

<?

XSLT file (code inside <xsl:if> is irrelevant for my problem):

<?

output:

<?
解决方案

What you see is the result of the built-in template rules being applied to nodes that aren't matched explicitly by any one of your templates.

To solve this, either add a template preventing text nodes being copied by default:

<xsl:template match="text()" mode="packagedElement"/>

or - preferably, IMHO - apply templates more selectively.

这篇关于XSLT - 不得复制节点值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-16 11:34