我需要的最终结果是所有文本节点具有相同的缩进。@name字段的大小不是固定的。Parentnode有不同数量的子节点,必须按照接收到的顺序对其进行解析。可能的其他节点不是在所有情况下都显式排序的。
XML:<parentnode>
<possibleothernodes1...n/>
<node name="SomeBoldText">
<text>Text1</text>
</node>
<node>
<text>Text2</text>
</node>
<node>
<text>Text3</text>
</node>
<node>
<text>Text4</text>
</node>
<possibleothernodes2...n/>
</parentnode>
我需要生成的HTML看起来像
possibleothernodes1
SomeBoldText: Text1
Text2
Text3
Text4
possibleothernodes2
我现在真正的目标是如何我组Text1,Text2, Text3, Text4到一个div标签,和@name到一个不同的div标签?有了两个潜水器,我就可以把它们漂浮到需要的地方。
这样如何:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="parentnode">
<div>
<h1>
<xsl:value-of select="node/@name"/>
</h1>
<div>
<xsl:apply-templates select="node/text" />
</div>
</div>
</xsl:template>
<xsl:template match="node/text">
<div>
<xsl:value-of select ="."/>
</div>
</xsl:template>
</xsl:stylesheet>
在您的示例输入上运行时,结果是:
<div>
<h1>SomeBoldText</h1>
<div>
<div>Text1</div>
<div>Text2</div>
<div>Text3</div>
<div>Text4</div>
</div>
</div>
好的,这是完全未经测试的,在咖啡到来之前,但希望这将是一个使用JQuery的良好开端:
$(function)(){
$.ajax({
url:"../folder/nameoffile.xml",
dataType:"xml",
success:function(xml){
$(xml).find("node").each(function(){
var sideName = $(this).attr("name");
$("#idofSideDiv").append(sideName);
var myNode = $(this).find("node").text();
// ok, this is assuming that you have an ul list
// to contain the text defined in the node
$("#idofULList").append("<li>"+myNode+"</li>");
})
}
});
});
就像我说的-完全未经测试,可能还有一些语法错误-但希望它可以成为一个良好的开始,为谷歌搜索。