← Prev in month ← Prev in thread

An element's value is an invalid Unicode string ... how can it be well-formed?

From
Costello, Roger L. <>
To
"" <>
Date
2013-01-04T18:26:47Z
ID
<>
Thread
An element's value is an invalid Unicode string ... how can it be well-formed?
Hi Folks,

Consider this Spanish name: Martiñez

Instead of using the ñ character, one can use the (base) "n" character followed by a combining tilde (hex 303) character.

So that Spanish name can be equivalently expressed as: Martin&#x303;ez

Here is an XML document that uses the latter form:

<?xml version="1.0" encoding="utf-8"?>
<Name>Martin&#x303;ez</Name>

I wrote a stylesheet that uses the substring() function to extract the combining tilde character and onward:

    <xsl:template match="/">
            <Result>
                    <xsl:value-of select="substring(Name, 7)" /> 
            </Result>     
    </xsl:template>

The output is:

<?xml version="1.0" encoding="UTF-8"?>
<Result>̃ez</Result>

I checked it for well-formedness and the XML Parser says it is well-formed.

According to the book, Fonts & Encodings (p. 61, first paragraph):

    ... we select a substring that begins
    with a combining character, this new
    string will not be a valid string in
     Unicode.

The value of the <Result> element is not a valid Unicode string, so how can it be a well-formed XML document?

/Roger
← Prev in month ← Prev in thread