VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1581|回复: 9

xsl条件判断如何出错?

[复制链接]

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-2-21 16:30:01 | 显示全部楼层 |阅读模式
xml结点Prod_Code/Year下有文本2015和2016,xml文件如下:
....
         <Prod_Code>000-000-001
            <Year>2015
                        ...               
               </Year>
              <Year>2016
                        。。。               
                </Year>
          </Prod_Code>
....
。我在xsl文件中用如下的条件进行判断是2015还是2016:
<xsl:for-each select = "./Prod_Code/Year">
                       
                        <xsl:if test=".[text()='2015'">
                                                。。。。                               
                        </xsl:if>
                        <xsl:if test=".[text()='2016']">
                             。。。
                           </xsl:if>

在xmlns:xsl="http://www.w3.org/TR/WD-xsl"这是可以的,但在xmlns:xsl="http://www.w3.org/1999/XSL/Transform"中缺不行,请问在xmlns:xsl="http://www.w3.org/1999/XSL/Transform"中该如何写才对?或者说如何实现这样的功能?
另外问一下在xsl中能将结点值赋给样式值吗?也就是要实现下面的的功能:
<input type="text" id="<xsl:value-of select ='.//year[1]'>">这句语法是错的,我只是希望实现这样的功能。能做吗?
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-5-4 22:30:01 | 显示全部楼层
<xsl:if test="text()='2015'">
。。。。                       
</xsl:if>


<input type="text" id="{.//year[1]}">
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-6 22:30:02 | 显示全部楼层
楼上的答案是正确的。。。
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-10 10:00:01 | 显示全部楼层
路过,二楼的应该可以
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-5-21 15:00:01 | 显示全部楼层
<xsl:if test="text()='2015'">
。。。。                       
</xsl:if>
不行,报下面的错
Required attribute 'select' is missing.
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-5-22 09:15:01 | 显示全部楼层
我把xsl再贴出来给大家看看吧:
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:template match="/">
....

<xsl:for-each select = "./Prod_Code/Year">
                       
                        <xsl:if test="text()='2015'">
                                                <tr bgcolor="silver">
                                                   <xsl:for-each select="./Y_M/Qty">
                                                        <td width = "80px" align = "left" valign

="top" style="font-size:9pt;">
                                                          <xsl:value-of />
                                                        </td>
                                                  </xsl:for-each>
                                                </tr>
                               
                        </xsl:if>
                        <xsl:if test="text()='2016'">
                                                <tr>
                                                    <xsl:for-each select="./Y_M/Qty">
                                                        <td  width = "80px" align = "left" valign

="top">
                                                        <input type= "text" id="M01" size = "10"

value = "" font-size="9pt"/>
                                                        </td>
                                                  </xsl:for-each>
                                                </tr>
                        </xsl:if>
                        </xsl:for-each>       

...
        </xsl:template>
</xsl:stylesheet>
要格式化的xml部分代码如下:
<?xml version="1.0" encoding="gb2312" standalone="no"?>
<InputTable>
        <Prod_CDesc>产品1
        <Prod_Code>000-000-001
                <Year>2015
                        <Y_M>2015-01
                                <Qty>10.00</Qty>
                        </Y_M>
                           ........                       
                </Year>
                <Year>2016
                        <Y_M>2016-01
                                <Qty />
                        </Y_M>
                    ................                       
                </Year>
          </Prod_Code>
          </Prod_CDesc>
......
</InputTable>
请大家再帮忙看看,问题出在哪里?
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-5-22 14:30:02 | 显示全部楼层
请大家注意我的namespace用的是http://www.w3.org/1999/XSL/Transform而不是http://www.w3.org/TR/WD-xsl
回复

使用道具 举报

0

主题

32

帖子

20.00

积分

新手上路

Rank: 1

积分
20.00
发表于 2020-5-23 19:00:01 | 显示全部楼层
1,你的xml设计是非常不合理的
2,2015后面有空格,可以使用substring(text(),1,4)='2015'进行判断
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-6-1 17:30:01 | 显示全部楼层
老大,问题不在这里,我的xml是通过程序产生的,我贴的时候多行了,还是报下面的错误:
Required attribute 'select' is missing.
在http://www.w3.org/TR/WD-xsl中是可以的,但在http://www.w3.org/1999/XSL/Transform中不行,我现在要在vs 2015中使用,好像只能使用http://www.w3.org/1999/XSL/Transform namespace。
因此没办法了。
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-7-7 09:00:01 | 显示全部楼层
这问题已经解决。还有一个新的问题想问大家,如何利用xsl将xml格式化成asp.net的文件,即aspx的文件,最主要的是要将对象格式化为<asp:开头的格式。不能只是简单加runat="server"
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表