【发布时间】:2011-08-24 13:16:03
【问题描述】:
我有 XML 文件,我想照原样复制它,但我想过滤一些不需要的元素和属性,例如以下是原始文件:
<root>
<e1 att="test1" att2="test2"> Value</e1>
<e2 att="test1" att2="test2"> Value 2 <inner class='i'>inner</inner></e2>
<e3 att="test1" att2="test2"> Value 3</e3>
</root>
过滤后(e3元素和att2属性已被移除):
<root>
<e1 att="test1" > Value</e1>
<e2 att="test1" > Value 2 <inner class='i'>inner</inner></e2>
</root>
注意事项:
- 如果可能的话,我更喜欢使用(for-each 元素而不是 apply-templates)
- 我在使用 xsl:element 和 xsl:attribute 时遇到了一些问题,因为我无法写入当前节点名称
谢谢
【问题讨论】:
-
为什么你更喜欢使用
for-each而不是apply-templates? -
@lwburk - 我认为“我对 xsl:element 和 xsl:attribute 有一些问题...”指出了一些更深层次的问题。
-
不清楚您是在搜索通用解决方案(未知元素名称)还是特定解决方案(过滤器
e3)。我提供的答案将在前一种情况下对您有所帮助,即使它很容易适应特定情况。 -
@lwburk:我认为 for-each 比 apply-templates 更接近编程语言风格,
-
一开始认为
for-each是解决大多数问题的自然方法是很正常的,但我认为随着您对XSLT 越来越熟悉,您会发现它完全没有必要。