如何在行
中动态指定href值<?xml-stylesheet type="text/xsl" href="first.xsl"?>
在xml中?
我想动态地替换“first.xsl”。
感谢您的帮助。 ==================道歉搞砸了这个/让你难以帮助====
我的XML是:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="first.xsl"?>
<WinData records="1" fields="4">
<record id="1">
<Name type="82">January</Name>
<Dept type="323">19</Dept>
<InceptionDate type="82">01/01/2010</InceptionDate>
<Salary type="645">3729.71</Salary>
</record>
<!-- Created from D:\AJAY\C#\VS2010\SBWA\XML -->
</WinData>
XSL是:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Sub Selection of Data</h2>
<table border="0">
<tr bgcolor="#9acd32">
<th>Name</th>
<th>Dept</th>
<th>InceptionDate</th>
<th>Salary</th>
</tr>
<xsl:for-each select="WinData/record" >
<xsl:sort select="./Name"/>
<xsl:sort select="./Dept"/>
<xsl:if test="Salary>100">
<tr>
<td><xsl:value-of select="Name"/></td>
<td><xsl:value-of select="Dept"/></td>
<td><xsl:value-of select="InceptionDate"/></td>
<td><xsl:value-of select="Salary"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我的具体问题/目标:
答案 0 :(得分:1)
两种可行的解决方案。
1)双程转换。您可以输出如下PI:
<xsl:processing-instruction name="xml-stylesheet">
<xsl:value-of select="concat('type="text/xsl" href="',
$whatever,
'"')"/>
</xsl:processing-instruction>
2)使用“填充”模式(或“填充空白”,作为Dimitre调用)和元数据URI来获取fn:document()
的布局。看这个Dynamically decide which XSL stylesheet to use
注意:PI是输入树的一部分。无论此输入树是来自解析文档还是由DOM API构建或以何种方式构建,对于XSLT处理器,只有“PI”类型的“静态”节点具有“最终”字符串值。
答案 1 :(得分:0)
您可以使用XSLT文档转换XML数据。
使用:(假设该节点称为“链接”)
<xsl:template match="link[.='first.xsl']">
<xsl:element name="link">
<xsl:text>newLink.xsl</xsl:text>
</xsl:element>
</xsl:template>