使用xslt后如何查看结果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?例如,原始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::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"/>
  ...