XSL For-Each循环选择值内的值

时间:2014-07-23 17:42:25

标签: xml xslt foreach

您好代码如下:

<?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 ....我面临的问题是我的输出是空的,或者当我将代码更改为value-of select =“ @name“我只得到用户名,用户名,用户名...

的输出

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

目前,您正在循环遍历所有@name元素的var属性。如果您只想要&#34;用户名&#34;那些,改成它......

<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"/>