XSLT的简单问题?急!!!

hn_6666 2003-10-21 04:12:43
xml文件内容:

<a type=input id=001>input1</a>
<a type=input id=002>input2</a>
......

<data id=001>data1</data>
<data id=002>data2</data>
......

希望能转换成HTML
<input id=001 name=input1/>
<input id=002 name=input2/>
......

<table>
<tr>
<td id=001>data1</td>
<td id=002>data2</td>
......
</tr>
</table>

这样的XSLT该如何写?

...全文
44 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssm1226 2003-11-05
  • 打赏
  • 举报
回复


<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='test.xsl'?>
<ROOT>
<a type="input" id="001">input1</a>
<a type="input" id="002">input2</a>
</ROOT>


test.xsl
<?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="//a">
<xsl:element name="{@type}">
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
ssm1226 2003-11-05
  • 打赏
  • 举报
回复
孟子老大的正确,你应该测试一下!
adjoin 2003-11-05
  • 打赏
  • 举报
回复
<input>
<xsl:attribute name="id">
<xsl:value-of select="@id"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
</input>

孟子E章 2003-10-22
  • 打赏
  • 举报
回复
你有没有拷贝测试一下啊~!~~~

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/" >
<xsl:for-each select="/r/a">
<input onclick="alert(this.id);alert(this.name)">
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="."/></xsl:attribute>
</input>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
kingdomzhf 2003-10-22
  • 打赏
  • 举报
回复
type=input id=001要改成type="input" id="001"
<?xml version='1.0' encoding='GB2312'?>
<?xml-stylesheet type='text/xsl' href='a.xsl'?>
<r>
<a type="input" id="001">input1</a>
<a type="input" id="002">input2</a>
<data id="001">data1</data>
<data id="002">data2</data>

</r>


<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/" >
<xsl:for-each select="/r/a">
<input>
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="."/></xsl:attribute>
</input>
</xsl:for-each>
<table border="1"><tr>
<xsl:for-each select="/r/data">
<td>
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
<xsl:value-of select="."/>
</td>
</xsl:for-each>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
colee 2003-10-22
  • 打赏
  • 举报
回复
你那xml文件有问题,用孟子E章写的xml文件试试
<?xml version='1.0' encoding='GB2312'?>
<?xml-stylesheet type='text/xsl' href='a.xsl'?>
<r>
<a type="input" id="001">input1</a>
<a type="input" id="002">input2</a>
</r>
hn_6666 2003-10-22
  • 打赏
  • 举报
回复
我写的XML是不规范的,这里只是简化了而已。

我问这个帖子的主要目的是想知道:
如何得到这种结果:<input id="变量1" name="变量2"/>,里面的“变量1”,“变量2”是从XML文件中读取的数据。
因为如果我用下面这种方式:
<input id="<xsl:value-of select="@id"/>" name="<xsl:value-of select=@name/>" />
我用的这种方式语法是错误。在"<",">"中是不能使用<xsl:标记>。

而你们给的这种方式,最后产生的是:
<input>
......
</input>
虽然在html里面<input>....</input>同<input ..../>是效果相同的,但是并没有解决我的问题,这里我是假设用<input>,但如果我用<div>的话,那结果<div id="001"></div>就和<div>id="001"</div>完全不同了!
hn_6666 2003-10-21
  • 打赏
  • 举报
回复
谢谢你!
不过按你写的生成的是:
<input>
001
</input>
这和我需要的输出<input id=001 name=input1 />似乎不一样啊?
~~~~~~ ~~~~~~
我不知道如何用变量或者其它方法表示上面的id和name的值?

孟子E章 2003-10-21
  • 打赏
  • 举报
回复
如果是1999的那个名称空间可以直接写:
<input id="{@id}">
<xsl:attribute name="name"><xsl:value-of select="."/></xsl:attribute>
</input>

孟子E章 2003-10-21
  • 打赏
  • 举报
回复
如果是1999的那个名称空间可以直接写:
<input id="{@id}" name="{name}"/>
孟子E章 2003-10-21
  • 打赏
  • 举报
回复
其他类似
孟子E章 2003-10-21
  • 打赏
  • 举报
回复
<?xml version='1.0' encoding='GB2312'?>
<?xml-stylesheet type='text/xsl' href='a.xsl'?>
<r>
<a type="input" id="001">input1</a>
<a type="input" id="002">input2</a>
</r>

a.xsl
====
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/" >
<xsl:for-each select="/r/a">
<input>
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="."/></xsl:attribute>
</input>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>


8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧