使用XSL转义无效的XML,或者创建有效的XML

使用XSL转义无效的XML,或者创建有效的XML,xml,xslt,Xml,Xslt,我有一个脚本的输出,可以控制其格式,但不能在其上执行函数 我的最终目标是有效的XML。目前我正在输出下面的.xml文件 <?xml version="1.0" encoding="UTF-8"?> <NowPlaying> <ArtistName>Mickey</ArtistName> <SongName>Disney Mayhem</SongName> <AlbumCover>http://w

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

我的最终目标是有效的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将无法解析

我的输入数据以更简单的方式输入会更好吗?注意:每个节点仅具有上述3种值类型


除了无效的XML错误之外,我的任何尝试都没有产生任何结果。

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

这就是我最后使用的

<?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链接


是有关CDATA的一些信息

您必须输入格式良好的XML。携带分隔值作为有效负载而不是标记文本的XML更难处理。它仍然必须是格式良好的。XSLT只能用于处理格式良好的XML。如果您的XML格式不正确,您不应该尝试修复它,您应该修复创建它的进程。好的,所以不可能。也许还有别的办法吗?也许我将数据写为CSV,并在xsl形成有效的XML之前使用php进行编码?我会重申。。。该数据是因为是未scaped,我不能执行功能,只需修改导出的格式。好的,谢谢。。。见我上面的评论。服务器上的PHP文件可能有一些解决方法吗?如果您使用PHP构建输入,那么我确信它有一些API可以帮助创建格式良好的XML,比如或。