Michael -
On Wed, Dec 12, 2018 at 4:20 PM Michael Kay mike(_at_)saxonica(_dot_)com <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
true here means child::true, a reference to an element node. It's not the
boolean constant true(). Saxon will generally give you a warning about this.
You don't have an element named true, therefore child::true returns an
empty sequence, and functions like starts-with treat an empty sequence the
same as an empty string. Every string starts with the empty string, so the
function returns true - or rather, true().
Perfect - the child::true -> empty sequence -> empty string is exactly the
explanation that I needed.
Michael Kay
Saxonica
Thanks!
Bridger
On 12 Dec 2018, at 21:10, Bridger Dyson-Smith bdysonsmith(_at_)gmail(_dot_)com <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
Hi all -
In the process of trying to illustrate something for a coworker, I
stumbled across some behavior that has me Very Confused. I would expect the
starts-with function to return 'false' when the second argument is not a
string, but the opposite happens: it returns 'true'.
Can someone please help me understand what's happening here? Is this a
sort of type casting, or something else?
Thank you in advance.
Best,
Bridger
source.xml
```
<?xml version="1.0" encoding="UTF-8"?>
<test>
<my-string>This Is My String</my-string>
</test>
```
test.xsl
```
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="my-string">
<xsl:if test="starts-with(.,true)">
<my-string-true>
<xsl:value-of select="starts-with(.,true)"/>
<xsl:text>###</xsl:text>
<xsl:value-of select="starts-with(.,'no')"/>
</my-string-true>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
```
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
email)
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/1230532> (by
email <>)
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--