使用XSL转义无效的XML,或以其他方式创建有效的XML

时间:2014-11-20 10:54:44

标签: xml xslt

我有一个脚本输出,我可以控制格式,但不能执行函数。

我的最终游戏是有效的XML。目前我正在输出以下.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<NowPlaying>
   <ArtistName>Mickey</ArtistName>
   <SongName>Disney Mayhem</SongName>
   <AlbumCover>http://www.example.com/someplace/artwork name with @ character.jpg</AlbumCover>
</NowPlaying>

某些数据包含未转义的@。是否可以使用XSL将其转换为有效的XML?或者无效的输入XML是否只是不解析?

我的输入数据更像是delimited string data更简单吗?请注意,每个节点仅具有上述3种值类型。

我的所有尝试都没有导致XML错误以外的其他任何内容。

2 个答案:

答案 0 :(得分:0)

XSLT的常用工作流程是使用XML解析器将XML输入文档解析为XSLT操作的节点树,并生成可以序列化为XML或HTML或纯文本的结果树。有一些工具链允许您在第一步中插入HTML解析器,以将HTML解析为节点树。您的示例既不是格式良好的XML,也不是HTML。因此,一般来说,您需要找到一种方法来修复您既不使用XML解析器也不使用XSLT的输入,一旦您拥有格式良好的XML,就可以使用XSLT。

答案 1 :(得分:0)

这就是我最终使用的......

<?xml version="1.0" encoding="UTF-8"?>
<NowPlaying>
   <ArtistName><![CDATA[Mickey]]></ArtistName>
   <SongName><![CDATA[Disney Mayhem]]></SongName>
   <AlbumCover><![CDATA[http://www.example.com/someplace/artwork name with @ character.jpg]]></AlbumCover>
</NowPlaying>

虽然我没有在技术上使用XSL创建有效的XML,但我能够实现使用未转义数据创建有效XML的目标。不幸的是,对于我的最终用途(第三方解析器),它仅对处理&有用,因为@仍然会破坏URL链接。

Here是关于CDATA的一些信息