提问人:Andrew G. Johnson 提问时间:6/22/2010 最后编辑:Paul SweatteAndrew G. Johnson 更新时间:7/10/2013 访问量:6497
有没有办法让 XSLT 回显出为其提供支持的 XML?
Is there a way to XSLT to echo out the XML powering it?
答:
6赞
Lucero
6/22/2010
#1
以下命令将完整的 XML 复制到结果树中:
<xsl:copy-of select="." />
如果你想把它发送到“消息输出”,你可以这样包装它:
<xsl:message>
<xsl:copy-of select="."/>
</xsl:message>
8赞
Dimitre Novatchev
6/22/2010
#2
基本上我正在使用一些 XSLT 来 转换 XML,有没有办法让 XSLT 吐出 XML 喂它?像这样:
最简单和最短的方法:
<xsl:copy-of select="/"/>
这将输出当前的 XML 文档。
<xsl:copy-of select="."/>
这将输出由当前节点根植的子树。
但是,XSLT 程序员主要使用以下(标识规则):
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
如果这是样式表中唯一的模板,则将输出应用转换的完整 XML 文档。
使用标识规则是最基本的 XSLT 设计模式之一。它使诸如复制所有节点但执行特定处理的特定节点(例如重命名、删除、修改内容等)等任务变得非常容易。
0赞
Paul Sweatte
1/6/2012
#3
使用带有 XPath 函数和尖括号实体的模板来输出节点名称:name()
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="serialize.xml"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"
>
<xsl:output method="xml" encoding="utf-8" version="" indent="yes" standalone="no" media-type="text/html" omit-xml-declaration="no" doctype-system="about:legacy-compat" />
<xsl:template match="xsl:stylesheet">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<xsl:apply-templates select="*" mode="serialize"/>
</body>
</html>
</xsl:template>
<xsl:template match="*" mode="serialize">
<<xsl:value-of select="name()" />>
<xsl:apply-templates select="*" mode="serialize"/>
</xsl:template>
</xsl:stylesheet>
有关详细信息,Jeni Tennison 解释了用于将 XML 节点复制到 HTML 以及在 XSL 列表上序列化外部 XML 文档的模板
评论