0

I'm trying use ends-with in xslt for return any values. for example: I've this 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>

and this static 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>

I need to verify if there's a book title in title xml. My code:

<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>

I wanna return when the book title ends-with in the tag VALUE in the xml books. Can anyone Help me? Thanks.

I've tried to use something like that How to use contains in xslt? but doesn't worked.

retatu
  • 453
  • 1
  • 9
  • 22
  • Possible duplicate of [use ends with in XSLT v1.0](http://stackoverflow.com/questions/11848780/use-ends-with-in-xslt-v1-0) – GSerg Nov 08 '16 at 17:40

1 Answers1

1

Your question is not entirely clear. I think you want to do something like this:

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>

Note that XML is case-sensitive: book does not match/select BOOK.

michael.hor257k
  • 113,275
  • 6
  • 33
  • 51