0

我需要的最终结果是让所有文本节点都具有相同的缩进。@name 字段的大小不是恒定的。父节点有不同数量的子节点,必须按接收顺序进行解析。可能的其他节点并非在所有情况下都明确排序。

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 标签中?使用两个 div,我可以将它们浮动到需要的位置。

4

2 回答 2

1

像这样的东西怎么样:

<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>
于 2013-04-26T15:42:30.123 回答
0

好的,这是完全未经测试的,在喝咖啡之前,但希望这将是使用一些 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>");
       })
     }
   });
});

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

于 2013-04-26T15:52:18.977 回答