我正在尝试在xslt中使用ends-with来返回任何值。例如:我有这个xml:
<BOOKS>
<BOOK>
<TITLE>title1</TITLE>
<ISSN>12313213</ISSN>
</BOOK>
<BOOK>
<TITLE>title2</TITLE>
<ISSN>67895776</ISSN>
</BOOK>
<BOOK>
<TITLE>title3</TITLE>
<ISSN>54363645</ISSN>
</BOOK>
</BOOKS>
和这个静态xml(book.xml):
<BOOKS>
<BOOK>
<VALUE>test title12</VALUE>
<PRICE>1235,23</PRICE>
</BOOK>
<BOOK>
<VALUE>test title1</VALUE>
<PRICE>345,23</PRICE>
</BOOK>
</BOOKS>
我需要验证标题xml中是否有书名。我的代码:
<xsl:template match="/">
<xsl:variable name="book" select="document('file:///E:/book.xml')"/>
<BOOKS>
<xsl:for-each select="$book/books/book">
<xsl:variable name="value" select="VALUE"/>
<xsl:variable name="price" select="ESTRATO"/>
<xsl:for-each select="//BOOKS">
<xsl:for-each select="BOOK">
<xsl:if test="ends-with($value, @TITLE)">
<BOOK>
<TITLE><xsl:value-of select="@TITLE"/></TITLE>
<ISSN><xsl:value-of select="$value"/></ISSN>
<PRICE><xsl:value-of select="$price"/></PRICE>
</BOOK>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</BOOKS>
</xsl:template>
我希望在书名结束时返回 - 在xml书籍中的标签VALUE中。谁能帮我?感谢。
我尝试使用类似How to use contains in xslt?之类的东西,但没有用。
答案 0 :(得分:1)
你的问题并不完全清楚。我想你想做这样的事情:
XSLT 2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="book" select="document('file:///E:/book.xml')"/>
<xsl:template match="/BOOKS">
<BOOKS>
<xsl:for-each select="BOOK">
<BOOK>
<xsl:copy-of select="TITLE | ISSN"/>
<PRICE>
<xsl:value-of select="$book/BOOKS/BOOK[ends-with(VALUE, current()/TITLE)]/PRICE"/>
</PRICE>
</BOOK>
</xsl:for-each>
</BOOKS>
</xsl:template>
</xsl:stylesheet>
请注意,XML区分大小写:book
与/ BOOK
不匹配。