【问题标题】:how to separate a value from its node and group the node with others of its type如何从其节点中分离一个值并将该节点与其类型的其他节点分组
【发布时间】:2013-04-26 15:37:16
【问题描述】:

我需要的最终结果是让所有文本节点都具有相同的缩进。 @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,我可以将它们浮动到需要的位置。

【问题讨论】:

  • 你能用jQuery解析这个吗?
  • 不,我受此限制。

标签: html xslt-1.0


【解决方案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>

【讨论】:

  • 我会再调查一下。我明白了,但我不确定它是否合适。父节点有不同数量的需要按顺序解析的子节点。我会更新问题。
【解决方案2】:

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

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

【讨论】:

  • 刚看到你不能使用JQuery,你可以使用任何JavaScript吗?
猜你喜欢
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 2020-09-24
相关资源
最近更新 更多