有没有办法让XSLT呼应为其提供动力的XML?
我正在使用XSLT转换XML。XSLT有没有办法吐出提供给它的XML?比如:有没有办法让XSLT呼应为其提供动力的XML?,xml,design-patterns,xslt,serialization,reflection,Xml,Design Patterns,Xslt,Serialization,Reflection,我正在使用XSLT转换XML。XSLT有没有办法吐出提供给它的XML?比如: <xsl:echo-xml /> 以下内容将完整的XML复制到结果树中: <xsl:copy-of select="." /> 如果您想将其发送到“消息输出”,您可以这样包装: <xsl:message> <xsl:copy-of select="."/> </xsl:message> 基本上,我使用一些XSLT来 转换XML,有没有一种
<xsl:echo-xml />
以下内容将完整的XML复制到结果树中:
<xsl:copy-of select="." />
如果您想将其发送到“消息输出”,您可以这样包装:
<xsl:message>
<xsl:copy-of select="."/>
</xsl:message>
基本上,我使用一些XSLT来
转换XML,有没有一种方法
XSLT吐出
喂它?比如:
<xsl:echo-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设计模式之一。它使复制除执行特定处理(如重命名、删除、修改内容等)的特定节点外的所有节点等任务变得极其简单。使用带有
name()
XPath函数和尖括号实体的模板来输出节点名:
<?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解释了XSL列表中的模板和模板将其输出到何处,用于什么目的?在调试器中运行XSL怎么样?好问题(+1)。请参阅我的答案,了解一些可能的解决方案,并进行了详细解释。