以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML源码及示例(仅原创和转载) 』  (http://bbs.xml.org.cn/list.asp?boardid=32)
----  有没有办法用 XSLT/XPath转换 实现 XML中 attribute 值的计算?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=32&rootid=&id=24277)


--  作者:绿洲
--  发布时间:11/15/2005 4:30:00 PM

--  有没有办法用 XSLT/XPath转换 实现 XML中 attribute 值的计算?
有没有办法用 XSLT/XPath转换 实现 XML中 attribute 值的计算?

例如:  
 <layout>
  <region id="reg1" top="0" left="0" height="240" width="2*120"/>
  <region id="reg2" top="0" left="500" height="240" width="max(320,240)"/>
 </layout>

通过 XSLT/XPath 转换后得到:
 <layout>
  <region id="reg1" top="0" left="0" height="240" width="320"/>
  <region id="reg2" top="0" left="500" height="240" width="320"/>
 </layout>

可以加一个象函数名一样的东西,如 width="calculate(2*120)"  或  width="calculate(max(320,240))"

或者除了XSLT/XPath 有什么别的方法来实现?

谢谢!!!!!


--  作者:98900969r
--  发布时间:11/19/2005 12:53:00 AM

--  
以width=120*2为例:
  <xsl:value-of select="number(substring-before(@width,'*')) * number(substring-after(@width,'*'))"/>

--  作者:绿洲
--  发布时间:11/19/2005 10:32:00 AM

--  
以下是引用98900969r在2005-11-19 0:53:00的发言:
以width=120*2为例:
   <xsl:value-of select=&quot;number(substring-before(@width,'*')) * number(substring-after(@width,'*'))&quot;/>

这样可能可以解决个别问题,有没有什么更普遍的方法? 有没有可能用调函数的方法? 如  width="calculate(2*120)"  或  width="calculate(max(320,240))", 然后在XSLT的某个地方写一个 calculate() 的函数。 或者,可不可以在 XSLT中嵌 javascript 来解决?


--  作者:98900969r
--  发布时间:11/20/2005 12:22:00 AM

--  
如果不求助script,可以做个命名template,让它产生一个node set。在调用是,把call-template放在一个变量,等call-template返回后,变量就接受了它的输出,相当于是返回值。代码大致如下:

<variable name=v1>
  <call-template name="calculate-width">
    <with-param name="param1" select="@width"/>
  </call-template>
</variable>



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
3,375.000ms