首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

xslt 中怎样对变量赋值解决方法

2012-04-04 
xslt 中怎样对变量赋值xml文件 a.xml?xml version1.0 encodingutf-8?employee name人员设置

xslt 中怎样对变量赋值
xml文件 a.xml
<?xml version="1.0" encoding="utf-8"?>
<employee name="人员设置">
  <emp name="个人信息">
  <姓名 id="1" >张三</姓名>
  <公司 id="1" >吉安名流</公司>
  <部门 id="1" >销售部</部门>
  <职位 id="1" >销售部经理</职位>
  </emp>
  <emp>
  <姓名 id="2">李四</姓名>
  <公司 id="1">吉安名流</公司>
  <部门 id="1">销售部</部门>
  <职位 id="2">销售助理</职位>
  </emp>
</employee>

a.xslt

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:db="urn:test-sqlinsert">
  <xsl:output method ="html"/>
  <xsl:param name ="a"/>
  <xsl:param name ="b"/>
  <xsl:param name ="c"/>
  <xsl:param name ="d"/>
<xsl:template match="/">
  <html>
  <body>
  <xsl:apply-templates select ="*"/>
  </body>
  </html>
</xsl:template>
  <xsl:template match ="*">
  <xsl:variable name ="name" select ="local-name()"/>
  <xsl:if test="$name='employee'">
  <h2><xsl:value-of select="@name"/></h2>
  <br/>
  </xsl:if>
  <xsl:if test ="$name='emp'">
  <h4>
  <xsl:value-of select ="@name"/>
  </h4>
  <br/>
  </xsl:if>
  <xsl:choose >
  <xsl:when test ="$name='姓名'"></xsl:when>
  <xsl:when test ="$name='公司'"></xsl:when>
  <xsl:when test ="$name='部门'"></xsl:when>
  <xsl:when test ="$name='职位'"></xsl:when>
  </xsl:choose>
  <xsl:apply-templates select ="*"/>
  </xsl:template>
  <xsl:template name ="text_sss" match ="姓名">
  <xsl:param name ="name1" select ="local-name()"/>
  <xsl:choose>
  <xsl:when test ="$name1='姓名'">
  <td><xsl:value-of select ="@id"/></td>
  <td><xsl:value-of select ="text()"/></td> 
  </xsl:when>
  </xsl:choose>
  </xsl:template>
  <xsl:template name ="text_s" match ="公司">
  <xsl:variable name ="name2" select ="local-name()"/>
  <xsl:choose>
  <xsl:when test ="$name2='公司'">
  <xsl:variable name ="a_id" select ="@id"/>
  <td>
  <xsl:value-of select ="@id"/>
  </td>
  <td>
  <xsl:value-of select ="text()"/>
  </td>
  </xsl:when>
  </xsl:choose>
  </xsl:template>
  <xsl:template name ="text_ss" match ="部门">
  <xsl:param name ="name3" select ="local-name()"/>
  <xsl:choose>


  <xsl:when test ="$name3='部门'">
  <xsl:variable name ="a_id" select ="@id"/>
  <td>
  <xsl:value-of select ="@id"/>
  </td>
  <td>
  <xsl:value-of select ="text()"/>
  </td>
  </xsl:when>
  </xsl:choose>
  </xsl:template>
  <xsl:template name ="text_ssss" match ="职位"> 
  <xsl:param name ="name4" select ="local-name()"/>
  <xsl:choose>
  <xsl:when test ="$name4='职位'">
  <xsl:variable name ="a_id" select ="@id"/>
  <td>
  <xsl:value-of select ="@id"/>
  </td>
  <td>
  <xsl:value-of select ="text()"/>
  </td>
  </xsl:when>
  </xsl:choose>
  </xsl:template>
</xsl:stylesheet> 

我想要得到最终是xml文件中 ID属性的值( 1,1,1,1 ) (2,1,1,2)

[解决办法]
这段能实现你想要的效果 (1,1,1,1),可以参考一下

XML code
<xsl:for-each select="/employee/emp/*">  <xsl:if test="position()!=1">,</xsl:if> <xsl:value-of select="@id"/></xsl:for-each>
[解决办法]
吐血!我的血哗啦哗啦的流啊。。。

给你一个例子,你自己揣摩一下。

XML:
XML code
<?xml version="1.0" encoding="UTF-8"?><ADMEVENT>    <RECORD SEQ="1">        <A>... 2</A>        <B>...1 </B>    </RECORD>    <RECORD SEQ="4">        <A>..2. </A>        <B>..3. </B>    </RECORD>    <RECORD SEQ="7">        <A>...43 </A>        <B>..3. </B>    </RECORD></ADMEVENT> 

热点排行