Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我有两个<;?xml版本=";1.0“;编码=";UTF-8“&燃气轮机;一个xml文件中的标记和I';我正在尝试为它创建xslt,如何处理这些标记?_Xml_Xslt - Fatal编程技术网

我有两个<;?xml版本=";1.0“;编码=";UTF-8“&燃气轮机;一个xml文件中的标记和I';我正在尝试为它创建xslt,如何处理这些标记?

我有两个<;?xml版本=";1.0“;编码=";UTF-8“&燃气轮机;一个xml文件中的标记和I';我正在尝试为它创建xslt,如何处理这些标记?,xml,xslt,Xml,Xslt,我需要为此创建一个XSLT代码,但到达“响应”代码后失败。由于我从远程服务接收到它,所以我无法更改它。请给出一些同样的建议。 我收到的响应XML: <?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <Response><?xml ve

我需要为此创建一个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>

0

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

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

以后


事实上,我想我应该限定这个答案。如果您知道文件包含一系列格式良好的XML文档,每个文档都以XML声明开头,那么可以使用
unparsed-text()
函数在XSLT 3.0样式表中读取该文档,使用
xsl:analyze string
将其拆分为组成文档,使用XPath 3.0
parse-xml()
函数解析这些文档,然后正常处理这些文档。您必须确保事先知道文件编码,并且必须确信其中没有“缺点”,比如在注释或CDATA节中伪装成XML声明的东西。

如果一个文件中有两个XML声明,那么您的文件就不是XML,如果它不是XML,那么就不能使用XSLT处理它

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

以后


事实上,我想我应该限定这个答案。如果您知道文件包含一系列格式良好的XML文档,每个文档都以XML声明开头,那么可以使用
unparsed-text()
函数在XSLT 3.0样式表中读取该文档,使用
xsl:analyze string
将其拆分为组成文档,使用XPath 3.0
parse-xml()
函数解析这些文档,然后正常处理这些文档。您必须确保事先知道文件编码,并且必须确信其中没有“污点”,比如在注释或CDATA节中伪装成XML声明的东西。

XML文档有效性是二进制的。它要么是有效的XML,要么不是XML。在文件的开头只能有一个XML声明。因此,您的示例不是XML。一些解析器可能不会拒绝它,但这将是该解析器处理非XML的某些情况的扩展。您需要与远程服务联系,让他们修复他们的响应。您确定
response
元素包含如图所示的未扫描的其他文档吗?通常在CDATA部分转义内部文档,例如
0]>
。在这种情况下,假设XSLT 3,您可以使用
解析xml
解析内部文档。xml文档的有效性是二进制的。它要么是有效的XML,要么不是XML。在文件的开头只能有一个XML声明。因此,您的示例不是XML。一些解析器可能不会拒绝它,但这将是该解析器处理非XML的某些情况的扩展。您需要与远程服务联系,让他们修复他们的响应。您确定
response
元素包含如图所示的未扫描的其他文档吗?通常在CDATA部分转义内部文档,例如
0]>
。在这种情况下,假设XSLT 3,您可以使用
parse xml
解析内部文档。