我正在生成 XML,其中主要数据来自 xsl 转换(但这不是问题,这只是我不使用 PHP DOM 或 SimpleXML 的原因)。
像这样:
$xml = '<?xml version="1.0" encoding="utf-8"?>' . PHP_EOL;
$xml .= '<rootElement>';
foreach($xslRenderings as $rendering) {
$xml .= $rendering;
}
$xml .= '</rootElement>';
生成的 XML 在此处针对其 XSD 进行验证http://www.freeformatter.com/xml-validator-xsd.html和此处http://xsdvalidation.utilities-online.info/。
但在这里失败:http ://www.xmlforasp.net/schemavalidator.aspx ,
Unexpected XML declaration. The XML declaration must be the first node in the
document, and no white space characters are allowed to appear before it.
Line 2, position 3.
如果我确实手动删除了 PHP_EOL 产生的换行符并点击返回,它会验证。
我假设这是最后一个模式验证器中的错误。还是 PHP_EOL(或 PHP 中的手动中断)对某些验证器来说是个问题?如果是,如何解决?
我问是因为生成的 XML 将被发送到 .NET 服务,并且最后一个验证器是用 NET 构建的。
编辑
XML 看起来像这样,Scheme 可以在这里找到http://cb.heimat.de/interface/schema/interfaceformat.xsd
<?xml version="1.0" encoding="utf-8"?>
<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://cb.heimat.de/interface/schema/interfaceformat.xsd">
<production foreignId="1327" id="0" cityId="6062" productionType="3" subCategoryId="7013" keywords="" productionStart="" productionEnd="" url=""><title languageId="1">
...
</production>