以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [求助]如何编写这种情况下 for-each 里的 select 条件  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=42708)


--  作者:gunjack
--  发布时间:1/23/2007 3:58:00 PM

--  [求助]如何编写这种情况下 for-each 里的 select 条件
xml部分是用ado save出来的,截取一部分:

<rs:data>
<z:row ac_ID="18" ac_NodeName="杭州地区" ac_hadson="1" ac_ParentID="17"/>
<z:row ac_ID="19" ac_NodeName="宁波地区" ac_hadson="1" ac_ParentID="17"/>
<z:row ac_ID="1349" ac_NodeName="杭州市" ac_hadson="1" ac_ParentID="18"/>
<z:row ac_ID="1358" ac_NodeName="桐庐县" ac_hadson="0" ac_ParentID="18"/>
<z:row ac_ID="1359" ac_NodeName="淳安县" ac_hadson="0" ac_ParentID="18"/>
<z:row ac_ID="1363" ac_NodeName="宁波市" ac_hadson="1" ac_ParentID="19"/>
<z:row ac_ID="1370" ac_NodeName="象山县" ac_hadson="0" ac_ParentID="19"/>
<z:row ac_ID="1371" ac_NodeName="宁海县" ac_hadson="0" ac_ParentID="19"/>
</rs:data>


xsl部分:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
  xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
  xmlns:rs="urn:schemas-microsoft-com:rowset"
  xmlns:z="#RowsetSchema">
<xsl:output encoding="utf-8" omit-xml-declaration="yes"/>
<xsl:template match="/">
    <xsl:for-each select="/xml/rs:data/z:row[@ac_ParentID = $parendID]">
        <xsl:element name="p"><xsl:value-of select="./@ac_NodeName" /></xsl:element>
        <xsl:for-each select="/xml/rs:data/z:row[@ac_ParentID = 18]">
            <xsl:element name="p"><xsl:value-of select="./@ac_NodeName" /></xsl:element>
        </xsl:for-each>
    </xsl:for-each>
 
</xsl:template>
</xsl:stylesheet>

关键就是上面红色 18。实际上它应该是随着第一个for来变化的。杭州地区是应该是18,宁波地区时应该是19。请问这个select应该怎么写??


[此贴子已经被作者于2007-1-23 16:28:40编辑过]

--  作者:sam
--  发布时间:1/23/2007 6:38:00 PM

--  
以下是引用gunjack在2007-1-23 15:58:00的发言:
xml部分是用ado save出来的,截取一部分:

<rs:data>
<z:row ac_ID="18" ac_NodeName="杭州地区" ac_hadson="1" ac_ParentID="17"/>
<z:row ac_ID="19" ac_NodeName="宁波地区" ac_hadson="1" ac_ParentID="17"/>
<z:row ac_ID="1349" ac_NodeName="杭州市" ac_hadson="1" ac_ParentID="18"/>
<z:row ac_ID="1358" ac_NodeName="桐庐县" ac_hadson="0" ac_ParentID="18"/>
<z:row ac_ID="1359" ac_NodeName="淳安县" ac_hadson="0" ac_ParentID="18"/>
<z:row ac_ID="1363" ac_NodeName="宁波市" ac_hadson="1" ac_ParentID="19"/>
<z:row ac_ID="1370" ac_NodeName="象山县" ac_hadson="0" ac_ParentID="19"/>
<z:row ac_ID="1371" ac_NodeName="宁海县" ac_hadson="0" ac_ParentID="19"/>
</rs:data>


xsl部分:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
   xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
   xmlns:rs="urn:schemas-microsoft-com:rowset"
   xmlns:z="#RowsetSchema">
<xsl:output encoding="utf-8" omit-xml-declaration="yes"/>
<xsl:template match="/">
     <xsl:for-each select="/xml/rs:data/z:row[@ac_ParentID = $parendID]">
       <xsl:variable name="acID" select="@ac_ID"></xsl:variable>
         <xsl:element name="p"><xsl:value-of select="./@ac_NodeName" /></xsl:element>
         <xsl:for-each select="/xml/rs:data/z:row[@ac_ParentID = $acID]">
             <xsl:element name="p"><xsl:value-of select="./@ac_NodeName" /></xsl:element>
         </xsl:for-each>
     </xsl:for-each>
  
</xsl:template>
</xsl:stylesheet>

关键就是上面红色 18。实际上它应该是随着第一个for来变化的。杭州地区是应该是18,宁波地区时应该是19。请问这个select应该怎么写??


[此贴子已经被作者于2007-1-23 16:28:40编辑过]



--  作者:gunjack
--  发布时间:1/24/2007 2:54:00 PM

--  
非常感谢大大,我一开始也是这么想的,但可能是写的代码有问题,所以没成功。

查了查资料,不是说xslt里的变量是不能改的吗?
意思是不是不能这么写: @acID=16(赋值)
而要写成:<xsl:variable name="acID" select="16"></xsl:variable>
但acID这个变量依然可以重复多次申明并赋值?


--  作者:yjs_lh
--  发布时间:1/25/2007 7:37:00 PM

--  
变量不是被修改了,而是每个循环都重新声明并赋了值。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms