使用XSL、XSLT—如何复制或打印正在转换的XML文档?

使用XSL、XSLT—如何复制或打印正在转换的XML文档?,xml,xslt,transform,Xml,Xslt,Transform,如果不访问XML文件或数据,您如何复制web页面正在使用XSL转换的XML文件的副本 我可以访问包含XSL代码的xml.config文件。我已经找到了输出XML文件所有数据的解决方案,但它没有帮助,因为它是一堵价值墙。它不包含xml标记,也不提供节点树。使用: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declarat

如果不访问XML文件或数据,您如何复制web页面正在使用XSL转换的XML文件的副本

我可以访问包含XSL代码的xml.config文件。我已经找到了输出XML文件所有数据的解决方案,但它没有帮助,因为它是一堵价值墙。它不包含xml标记,也不提供节点树。

使用:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/">
  <xsl:copy-of select="."/>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于任何XML文档时,例如此文档:

<nums>
  <num>01</num>
  <num>02</num>
  <num>03</num>
  <num>04</num>
  <num>05</num>
  <num>06</num>
  <num>07</num>
  <num>08</num>
  <num>09</num>
  <num>10</num>
</nums>
<nums>
   <num>01</num>
   <num>02</num>
   <num>03</num>
   <num>04</num>
   <num>05</num>
   <num>06</num>
   <num>07</num>
   <num>08</num>
   <num>09</num>
   <num>10</num>
</nums>

01
02
03
04
05
06
07
08
09
10
生成所需的结果(相同的XML文档):

<nums>
  <num>01</num>
  <num>02</num>
  <num>03</num>
  <num>04</num>
  <num>05</num>
  <num>06</num>
  <num>07</num>
  <num>08</num>
  <num>09</num>
  <num>10</num>
</nums>
<nums>
   <num>01</num>
   <num>02</num>
   <num>03</num>
   <num>04</num>
   <num>05</num>
   <num>06</num>
   <num>07</num>
   <num>08</num>
   <num>09</num>
   <num>10</num>
</nums>

01
02
03
04
05
06
07
08
09
10

如果您只需要查看数据,可以使用以下简单方法:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" indent="yes"/>

  <xsl:template match="*">
    <xsl:value-of select="concat('&lt;',name())" />
    <xsl:apply-templates select="@*" />
    <xsl:text>&gt;</xsl:text>
    <xsl:apply-templates select="node()"/>
    <xsl:value-of select="concat('&lt;/',name(),'&gt;')" />
  </xsl:template>

  <xsl:template match="@*">
    <xsl:value-of select="concat(' ',name(),'=&quot;',.,'&quot;')" />
  </xsl:template>
</xsl:stylesheet>


这不会输出注释或处理指令,但如果您只需要查看文档的数据和结构,这就足够了。如果您需要更详细的内容,您可能会找到一个xslt,它可以将XML文档转换为显示它的网页。我这里有一个正在进行的工作:。我在我的网站上用过这个,但可能有更好的方法。

谢谢Dimitre,但我想我以前用过这个,它可以打印出文本墙中的所有值。没有xml标记或树结构。@sungod000,当你说“我以前用过这个”时,这被称为“轶事证据”。XSLT是一门严格的学科——您必须提供一个反例。我会帮你的,你不能这么做。只有当你有
时,你所描述的才有可能,但我的解决方案不是这样。我错了!对不起,我只是在看这一页。我忘了看显示DOM的开发工具。谢谢@Dimitre:有些web浏览器只会将XML文档视为html文档,如果不识别元素(因为它们不是html元素),则只会显示文本节点的内容。此外,如果您希望XML显示为“打印精美”,则sungod000通过web浏览器--您只需将其输入到浏览器,并获得缩进结果,通常使用语法hi lighting。如果您需要一个转换来生成用于如此漂亮的浏览器显示的HTML,那么它们都是可用的——例如IE的默认样式表。我还建议您看看并使用XPath可视化工具使用的XSLT转换——它生成类似于IE:sungod000的输出,您所说的“值墙”是什么意思?听起来太有诗意了,因此也太模糊了……sungod000,如果您想让这个问题真正有意义,您需要提供一个示例XML文档(请尽量小),以及转换的确切结果。然后,如有必要,解释从提供的XML文档中获取所需结果的规则。显示此“代码墙”的一部分的图片或转储。注意:xslt转换(在一般情况下)是不可逆的。很难准确理解你在问什么。你的输入数据是什么?@AlexBrown请原谅我缺乏正确的术语,我是新手,正试图为某人解决一个问题。另外,你是对的,我应该给出我所说的例子或图像。谢谢Flynn1179,这也行,但Dimetre首先给了我正确的答案,我只是太傻了,没有意识到。嘿,如果你能像那样查看DOM,是的,照原样复制文档就足够了。我以为你可能没有权限那样查看DOM。