使用xslt后如何查看结果xml文件
我知道这似乎很愚蠢,但我如何才能看到结果xml?例如,原始xml:使用xslt后如何查看结果xml文件,xml,perl,xslt,Xml,Perl,Xslt,我知道这似乎很愚蠢,但我如何才能看到结果xml?例如,原始xml: <?xml-stylesheet type="text/xsl" href="root.xsl"?> <root> <list> <a>aaaa</a> <b>bbbb</b> </list> </root> 我尝试perl建模:XML::XSLT use diagnostics; use
<?xml-stylesheet type="text/xsl" href="root.xsl"?>
<root>
<list>
<a>aaaa</a>
<b>bbbb</b>
</list>
</root>
我尝试perl建模:XML::XSLT
use diagnostics;
use XML::XSLT;
my $xsl='root.xsl';
my $xmlfile='root.xml';
my $xslt = XML::XSLT->new ($xsl, warnings => 1);
$xslt->transform ($xmlfile);
print $xslt->toString;
$xslt->dispose();
但它不起作用,我以前从未使用过xslt,我是不是走错了路
提前感谢。(将所有旧的投诉推下)
事实证明,我可以通过使用选择属性来实现这一点。因此,对于文本节点值来说,它被破坏了(至少看起来是这样)。这就是我所做的。我修改了您的XML以实现此目的:
...
<xsl:param name="evalue" select="cccc"/>
<xsl:param name="ename" select="c"/>
...
。。。
...
然后意识到我得到了一个文档片段(XML::DOM::DocumentFragment
)作为$xslt->result\u文档,我使用了文档所有者,并将打印行更改为:
打印“\n--\n”,$xslt->result\u document->getOwnerDocument->toString”\n--\n
但是,它看起来像旧文档。我真的建议使用其他东西,从2005年到2006年,它有开放的和新的bug:最后解决的bug也是6年前:
我在代码中爬行的次数越多,我看到的错误就越多
“它不工作”是什么意思?!!你和我一样有堆栈跟踪吗?从我所看到的(在我所拥有的版本0.48中),这个模块是弃用软件,可能是有充分理由的
- 它存储XML文档的唯一方式是
,它仅在open\u XML
或open\u项目
中调用李>transform
不在内部调用,而open\u project
仅由transform
调用,后者不在内部调用service
始终调用new
open\u xsl
- 它总是调用
\uuuu预处理\u样式表
- 它总是调用
\uuuuuExtract\uTop\uLevel\uVariables
- 它尝试解析变量和param元素,如果该元素没有
选择
属性(您没有),它尝试调用
,然后调用其xml\u document
方法。但是,它(据我所知)不允许您设置createDocumentFragment
。它可能意味着调用xml\u文档
。但是当它到达这里的时候,它已经存储了一个xsl\u文档
而不是作为XML::DOM::Element
的一个必需部分的文档,在调用\uuuu get\u样式表
之前,一直从\uu preprocess\u样式表
调用该文档李>\uu extract\u top\u level\u变量
xml\u document
的形式离开电话时,它告诉我:无法对未定义的值调用方法“createDocumentFragment”
。但是如果您将其分配给更正确的xsl\u文档
字段,您会被告知无法通过包“XML::DOM::Element”找到对象方法“createDocumentFragment”
无论如何,我相信这更标准 这似乎是关于PerlXML/XSLTAPI的问题,而不是关于XSLT本身的问题。所以我很抱歉不能帮你。@(u琐碎):在浏览器中查看转换结果不是一个好做法。使用任何好的文本编辑器或XSLT IDE。我得到以下错误:XML::LibXSLT对象版本1.70与C:/草莓/perl/lib/DynaLoader.pm第223行的引导参数1.75不匹配。BEGIN失败——编译在C:/草莓/perl/site/lib/XML/LibXSLT.pm第44行中止。
aaaabbbbcccc
use diagnostics;
use XML::XSLT;
my $xsl='root.xsl';
my $xmlfile='root.xml';
my $xslt = XML::XSLT->new ($xsl, warnings => 1);
$xslt->transform ($xmlfile);
print $xslt->toString;
$xslt->dispose();
...
<xsl:param name="evalue" select="cccc"/>
<xsl:param name="ename" select="c"/>
...