2016-11-08 62 views
0

我正在尝试在xslt中使用ends-with来返回任何值。例如:我这个XML:如何在xslt 2.0中使用ends-with?

<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

[使用在XSLT v1.0中结束]可能的重复(http://stackoverflow.com/questions/11848780/use-ends-with-in-xslt-v1-0) – GSerg

回答

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

+0

谢谢迈克尔! –