0
添加所有的开始和结束标记到输出
假设我有一个这样的XML:使用XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<root xmlns:dbk="http://K.com"
xmlns:dbs="http://S.com"
xmlns:dbp="http://p.com"
xmlns:dbm="http://z.com" >
<a>
This is the first text
<alter>
<dbk:x> Hello </dbk:x>
<dbs:y role='Strong'>World </dbs:y>
</alter>
</a>
<d>
This is the second text
<alter>
<dbp:w> How are </dbp:w>
<dbm:z role='Italic'> you? </dbm:z>
</alter>
</d>
</root>
我想捕获所有改变要素但是一切都应该被打印出来,以及包括打开和关闭标签属性所以输出应该是这样的:
<x> Hello </x>
<y role='Strong'> World </y>
<w> How are </w>
<z role='Italic'> you? </z>
注意
- 我要输出所有标签( 都开始和结束标记和圣坛元素中的属性)以及文本
- 标签可以被改变和决定应不根据标签的名字,因为他们都是自动生成的和动态
- 一个ALTER元素内的标签名称可以是从加入到另一个的alter元件像上述代码的不同:
第一ALTER具有
<x></x>
和
<y role=''></y>
而第二ALTER具有
<w></w>
和
<z role=''><z>
而第三ALTER可以有别的东西和...。
不确定XSLT应该是什么样子?
编辑:基于@Mads汉森的解决方案
,输出将是:
<dbk:x xmlns:dbk="http://K.com" xmlns:dbs="http://S.com" xmlns:dbp="http://p.com" xmlns:dbm="http://z.com"> Hello </dbk:x>
<dbs:y role="Strong" xmlns:dbs="http://S.com" xmlns:dbk="http://K.com" xmlns:dbp="http://p.com" xmlns:dbm="http://z.com">World </dbs:y>
<dbp:w xmlns:dbp="http://p.com" xmlns:dbk="http://K.com" xmlns:dbs="http://S.com" xmlns:dbm="http://z.com"> How are </dbp:w>
<dbm:z role="Italic" xmlns:dbm="http://z.com" xmlns:dbk="http://K.com" xmlns:dbs="http://S.com" xmlns:dbp="http://p.com"> you? </dbm:z>
的问题是,所有的命名空间已添加到外港,以及这是不期望。
有什么办法摆脱所有的命名空间?
请求的输出(以及你现在得到的输出)是无效的XML:你必须有一个根元素。 –
然而,输出应该包含所有标签,它不应该是XML输出(即XML文件),因此不需要具有根标签以及<?xml version =“1.0”encoding =“UTF-8 “?> – Azi
那么也许你应该输出这个*文本*,遵循一些预定义模式 - 而不关心打开和关闭标签。无根输出XML的问题在于某些处理器将全部放在一行上。这个练习的总体目的是什么? –