【发布时间】:2016-03-14 08:39:02
【问题描述】:
我有以下输入 XML:
<library>
<elements>
<element name="books">
<property name="author">A</property>
<property name="select">false</property>
</element>
<element name="books">
<property name="author">B</property>
<property name="select">false</property>
</element>
<element name="books">
<property name="author">C</property>
<property name="select">false</property>
</element>
<element name="books">
<property name="author">A</property>
<property name="select">true</property>
</element>
</elements>
</library>
我需要获取名称为“books”的所有元素的输出,这些元素被选中(selected = true)并且按作者姓名唯一。必须使用 xslt 1.0。
xsl 解决方案:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template match="/">
<ul>
<xsl:for-each select="//elements/element[@name = 'books' and property[@name = 'select' and .='true'] ]/property[@name = 'author' and not(.=preceding::*)]">
<li>
<xsl:value-of select="concat('author :',.)"/>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
XSLT 解决方案不起作用。有什么建议吗?
我在上一个问题中寻求帮助,当只有一个元素具有选择值“真”时,建议的答案在上述输入 xml 中不起作用
【问题讨论】:
-
预期输出是什么? “按作者姓名选择和唯一”到底是什么意思?据我了解,您的 xml 中的所有元素都不符合这些标准:作者 A 不是唯一的,作者 B 和 C 未被选中,所以我希望输出为空,这正是您的 XSLT 提供的内容。
标签: xslt