【问题标题】:XSL For-Each Loop Selecting a Value within a ValueXSL For-Each 循环在一个值中选择一个值
【发布时间】:2014-07-23 17:42:25
【问题描述】:

你好,代码如下:

<?xml version="1.0"?>
<wddxPacket version="1.0">
  <header/>
    <data>
      <array length="2">      
        <struct type="coldfusion.server.ConfigMap">
          <var name="XXXXX">
            <struct type="coldfusion.server.ConfigMap">
              <var name="disable"><boolean value="false"/></var>
              <var name="alter"><boolean value="true"/></var>
              <var name="username"><string>username1</string></var>
              etc.

代码以 1000 个用户名值继续。我想创建一个选择每个用户名的循环。到目前为止,我选择每个用户名的代码如下所示。

 <?xml version="1.0" encoding="UTF-8"?>
   <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

       <xsl:template match="/">

         <xsl:for-each select='wddxPacket/data/array/struct[@type="coldfusion.server.ConfigMap"]
                               /var/struct[@type="coldfusion.server.ConfigMap"]/var/@name'>
          <xsl:value-of select="username"/>,

          </xsl:for-each>

         </xsl:template>

    </xsl:stylesheet> 

我希望我的输出看起来像:username1,username2,username3,username4....我面临的问题是我的输出是空的,或者当我将代码更改为 select = 的值时@name" 我只是得到用户名、用户名、用户名的输出...

感谢您的帮助!

【问题讨论】:

    标签: xml xslt foreach


    【解决方案1】:

    目前,您正在循环所有var 元素的@name 属性。如果您只想要“用户名”,请将其更改为...

    <xsl:for-each select='wddxPacket/data/array/struct[@type="coldfusion.server.ConfigMap"]
                                    /var/struct[[@type="coldfusion.server.ConfigMap"]
                                    /var[@name="username"]'>
    

    然后,要获取用户名,您可以这样做...

     <xsl:value-of select="string"/>
    

    【讨论】:

    • 感谢您的快速回复和建议!不幸的是,我已经完全按照您的建议进行了尝试,但没有奏效。我不确定它可能是什么。
    • 首先,检查节点名称或属性值中的拼写错误(确实,我刚刚注意到一个!它指的是struc而不是struct,所以我在我的回答中更正了这个)。另外,你实际的 xml 是否有命名空间,因为这也会影响事情。
    • 没有任何命名空间,我检查了拼写错误。让我困惑的是当我写 完美地选择了用户名的第一个值,但是在循环中实现时,相同的概念将不起作用。
    • 您可能需要编辑您的问题以显示稍大的 XML 示例。通常首选小样本,但在这种情况下,您可能需要显示多个“用户名”。谢谢!
    • 感谢您的宝贵时间,并在我多次检查后帮助您的解决方案有效!事实证明我的代码中确实有一个额外的“/”,它把它扔掉了。
    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多