我们正在使用XSLT根据其值显示xml属性。我们可以使用C#从服务器端执行此操作。但我们没有得到如何通过XSLT实现它。
我们使用样本xml作为;
<BookInfo>
<BookTable show="Book 1" >
<book id="book1" value="Book 1" />
<book id="book2" value="Book 2" />
</BookTable>
</BookInfo>
我们想要读取“show”属性值,并根据值,我们想要显示节点信息。
请帮我用XSLT实现这一目标。
提前谢谢。
修改了xml;
<Book>
<Info>
<Item name="Item1" type="DropDown" defaultValue="Two" values="One,Two,Three" />
<Item name="One" type="Label" value="some text" />
<Item name="Two" type="TextBox" value="another text" />
<Item key="Three" name="CheckBox" value="true" />
</Info>
</Book>
不幸的是xml格式发生了变化。现在,在这种情况下,对于Item1,defaultValue为2,因此应该返回名为“two”的节点。
答案 0 :(得分:1)
它类似于:
<xsl:template match="BookTable">
<xsl:value-of select="book[@value = current()/@show]"/>
</xsl:template>
修改强>
你的第二个例子不太清楚,我假设总有一个<Item name="Item1">
节点,它指向应该显示的真实节点。
<xsl:template match="Info">
<xsl:copy-of select="Item[@name = Item[@name='Item1']/@defaultValue]" />
</xsl:template>
在XPath中,您需要@
来获取input-xml属性的值。
Item[@name = ...]
选择name属性值等于指定值的项目
current()
可以访问模板正在处理的当前节点。您需要它,因为普通@show
将为所选节点选择该属性的值。示例:Item[@name = @defaultValue]
会选择“name”和“defaultValue”的值相同的项目。