繁体   English   中英

我有两个 <?xml version=“1.0” encoding=“UTF-8”?> 标签放在一个xml文件中,而我正试图为其创建一个xslt,我该如何处理这些标签?

[英]I have two <?xml version=“1.0” encoding=“UTF-8”?> tags in one xml file and I'm trying to create a xslt for it, How do i handle these tags?

我需要为此创建一个XSLT代码,但是到达“响应”代码后失败。 而且由于我是从远程服务接收到的,所以无法更改它。 请给一些建议。 我收到响应的XML:

<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<Response><?xml version="1.0" encoding="UTF-8"?>
<ResponseCode>
0
</ResponseCode>
</Response>
</soapenv:Body>
</soapenv:Envelope>

如果文件中有两个XML声明,则文件不是XML,如果文件不是XML,则无法使用XSLT处理该文件。

如果要处理非XML文件,则在开始之前需要使用一些非XML技术将它们转换为XML。 (但是,最好尝试说服供应商修复其错误。有关标准的全部要点是,只要您确实遵守规则,它们就可以为每个人节省成本。)如果确实需要修复损坏的XML文件,则可以有时可以使用诸如HTML Tidy或validator.nu之类的实用程序,或者您可能需要自定义Perl脚本或类似脚本。

后来

实际上,我认为我应该对此答案进行限定。 如果您知道您的文件包含一系列格式良好的XML文档,每个序列均以XML声明开头,那么使用unparsed-text()函数在XSLT 3.0样式表中读取该unparsed-text() ,将其拆分成其组成部分可能是可行的使用xsl:analyze-string的文档,使用XPath 3.0 parse-xml()函数parse-xml()这些文档中的每一个,然后像平常一样处理这些文档。 您将必须确保事先知道文件编码,并且必须确信其中没有“麻烦”,例如在comment或CDATA部分中伪装成XML声明的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM