如何将值与其节点分离,并将该节点与该类型的其他节点分组



我需要的最终结果是所有文本节点具有相同的缩进。@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>");
       })
     }
   });
});

就像我说的-完全未经测试,可能还有一些语法错误-但希望它可以成为一个良好的开始,为谷歌搜索。

相关内容

  • 没有找到相关文章

最新更新