我有大量的xml文件:
首先:
<xmldata1>
<record>
<property11>abc</property11>
<property12>def</property12>
<property13>xyz</property13>
............
</record>
........
</xmldata1>
第二
<xmldata2>
<record>
<property21>abc</property21>
<property22>def</property22>
<property23>xyz</property23>
............
</record>
........
</xmldata2>
等等。
将不再有嵌套标签。 但是每个xmldata文件的属性标记名称都不同。
因此,我希望使用HTML
动态生成XSLT
表单,以用于读取每个xml
的数据。应使用简单的文本框来读取每个属性。我们可以将第一条记录作为物业编号和名称的参考。
所需的输出
<form name ="xmldata1">
<table>
<tr>
<td>property11 :</td>
<td><input type="text" name="property11"></td>
</tr>
.......
and so on
</table>
</form>
我怎样才能做到这一点。我在哪里可以找到示例。
答案 0 :(得分:5)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" />
<!--Template match for the document element, no matter what the name -->
<xsl:template match="/*">
<form name="{local-name()}">
<table>
<!--Apply-templates for all of the record/property elements -->
<xsl:apply-templates select="*/*"/>
</table>
</form>
</xsl:template>
<!--Match on all of the property elements and create a new row for each -->
<xsl:template match="/*/*/*">
<tr>
<td><xsl:value-of select="local-name()"/> :</td>
<td><input type="text" name="{local-name()}"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:3)
你的意思是那样的吗?
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" />
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="*[starts-with(name(), 'xmldata')]">
<xsl:element name="form">
<xsl:attribute name="name"><xsl:value-of select="name(.)" /></xsl:attribute>
<table>
<tr>
<xsl:apply-templates />
</tr>
</table>
</xsl:element>
</xsl:template>
<xsl:template match="record">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="*[starts-with(name(), 'property')]">
<td>
<xsl:value-of select="name(.)" />
</td>
<td>
<xsl:element name="input">
<xsl:attribute name="type">text</xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="name(.)" /></xsl:attribute>
</xsl:element>
</td>
</xsl:template>