如何使用XSLT将xml转换为具有xml标记和属性的html,作为具有等效树的html的文本?
我想我从来没有问过这样一个标题令人费解的问题,对此我很抱歉 假设我拥有的XML文件看起来不是我不想复制/粘贴的,而是太大了:如何使用XSLT将xml转换为具有xml标记和属性的html,作为具有等效树的html的文本?,html,xml,xslt,xslt-1.0,Html,Xml,Xslt,Xslt 1.0,我想我从来没有问过这样一个标题令人费解的问题,对此我很抱歉 假设我拥有的XML文件看起来不是我不想复制/粘贴的,而是太大了: <A attr1="aaa" attr2="bbb"> <B attr8="23156"> <C attr10="bla"/> <C attr10="bli"/> <C attr10="blo"/> </B> </A> <
<A attr1="aaa" attr2="bbb">
<B attr8="23156">
<C attr10="bla"/>
<C attr10="bli"/>
<C attr10="blo"/>
</B>
</A>
<A attr1="jhg" attr2="ygyug">
<B attr8="126">
<C attr10="bla"/>
</B>
<B attr8="102">
<C attr10="bla"/>
<C attr10="blo"/>
</B>
</A>
好吧,你明白了,一个通用的XML文件。我不知道标签、标签顺序和属性。
我必须使用XSLT将此XML转换为HTML文件,并将XML的所有节点和属性作为文本,放在一个等价的树中:
<div>
<A attr1="aaa" attr2="bbb">
<div>
<B attr8="23156">
<div><C attr10="bla"/></div>
<div><C attr10="bli"/></div>
<div><C attr10="blo"/></div>
</div>
</div>
<div>
<A attr1="jhg" attr2="ygyug">
<div>
<B attr8="126">
<div><C attr10="bla"/></div>
</div>
<div>
<B attr8="102">
<div><C attr10="bla"/></div>
<div><C attr10="blo"/></div>
</div>
</div>
我可以通过选择//node来获取每个节点的名称,也可以通过选择@*来获取属性,但我不知道如何按照预期获取html
如果您能提供任何帮助,我们将不胜感激:D将以下XSLT应用于您的示例将产生预期的结果,并且在斜杠字符之前的空格中有细微的差异
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="*">
<div>
<<xsl:value-of select="name()"/><xsl:value-of select="' '"/><xsl:apply-templates select="@*"/><xsl:apply-templates select="." mode="close-if-leaf"/>>
<xsl:apply-templates select="*"/>
</div>
</xsl:template>
<xsl:template match="*" mode="close-if-leaf">
<xsl:if test="count(*) = 0">/</xsl:if>
</xsl:template>
<xsl:template match="@*">
<xsl:value-of select="name()"/>="<xsl:value-of select="."/>"<xsl:value-of select="' '"/>
</xsl:template>
</xsl:stylesheet>
很好,这正是我需要的,谢谢你!我今天否认了关闭叶模式: