我有与验证XML问题的Schematron 。
在我的代码加载XML和XSL为DOM文档对象,我试着改造:
$domSche = new DOMDocument();
$domSche->loadXML($message);
$domXSLSche = new DOMDocument();
$domXSLSche->load("CI-SIS_StructurationCommuneCDAr2.xsl");
$xsltsche = new XSLTProcessor();
$xsltsche->importStylesheet($domXSLSche);
$XSLValid = $xsltsche->transformToXml($domSche);
但该函数返回此错误:
XSLTProcessor中:: transformToXml():没有关联到这个对象样式
我不明白,在技术上,该importStylesheet我XSL关联的XML,不是吗?
如果有人想看看更多的来源,文件是在:
- $消息
- CI-SIS_StructurationCommuneCDAr2.xsl
你利用不需要XSL 2.0的Schematron版本,但是你有文件利用了XSL 2.0功能。
XSLTProcessor
的PHP支持XSL 1.0只。 因此,一些在该文件中使用的功能不可用,使导入失败。
由于样式表无法导入,转换不能运行。
错误信息
警告:XSLTProcessor中:: transformToXml():没有关联到这个对象样式
意味着样式表丢失。 不是在磁盘或内存,但对于转型。
这是因为它有错误,最终无法编译。
你的情况,你有XSL文件是2.0版本,但是PHP只支持1.0功能。 此外,它利用了未设置(定义)变量。 当我加载示例数据,我得到以下错误:
警告:XSLTProcessor中:: importStylesheet():编译错误:文件CI-SIS_StructurationCommuneCDAr2.xsl线13元的样式表
那就是:
version="2.0">
并通过下一个警告解释说:
警告:XSLTProcessor中:: importStylesheet():XSL:版本:仅1.0功能的支持
接下来是未定义的变量:
警告:XSLTProcessor中:: importStylesheet():未定义的变量
警告:XSLTProcessor中:: importStylesheet():编译错误:文件CI-SIS_StructurationCommuneCDAr2.xsl线4974元模板
这是
<!--RULE -->
<xsl:template match="*[cda:templateId/@root = $templateObservationMedia]" priority="1000"
mode="M62">
这是$templateObservationMedia
变量,并导致
警告:XSLTProcessor中:: importStylesheet():无法编译谓词
为了得到这个工作,你至少需要解决这些问题。 作为使用匹配模式里面的变量不是XSLT 1.0,你需要解决的是至少。 见在XSLTProcessor中:: importStylesheet()多PHP警告该变量/匹配问题的广泛讨论。