XSLT中的瑞典字符

时间:2017-09-21 05:59:03

标签: xslt

我正在尝试为XML输入执行xslt转换。只要xml输入具有瑞典字符,xslt转换就会失败。有人可以帮我解决这个问题。客户端需要按原样传递北欧字符。

XSLT:

<?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:template match="/">
        <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="EmploymentUpdateRequests">
   <xsl:copy>
          <xsl:for-each-group select="EmploymentUpdateRequest"
                group-by="descendant::FieldValue[@Name ='FORNAMN']">
                <xsl:sort select="descendant::FieldValue
                                  [@Name ='FORNAMN']/ValidFrom" 
                          order="ascending"/>
                <xsl:copy-of select="current-group()"/>
            </xsl:for-each-group>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

后记

输入如下:

<FieldValue Name="FORNAMN" Type="String"> 
  <ValidFrom Format="yyyy-MM-dd">2017-08-18</ValidFrom> 
  <ValidUntil Format="yyyy-MM-dd">2099-12-31</ValidUntil> 
  <Value>Nicoleta Geta ÅåÄäÖö</Value> 
</FieldValue> 

我收到类似

的错误
  

无法运行'sortXMLByValidFrom'com.wm.app.b2b.server.ServiceException:net.sf.saxon.trans.DynamicError:org.xml.sax.SAXParseException; lineNumber:76; columnNumber:28; 2字节UTF-8序列的字节2无效。

1 个答案:

答案 0 :(得分:0)

错误消息告诉您输入不是UTF-8,这反过来告诉我们XSLT处理器认为输入应该 bei(UTF-8)(1 )因为文档内编码声明是这样说的,或者(2)因为没有文档内编码声明,并且处理器已经猜到字符编码是UTF-8而不是UTF-16(这些只是两个选项)没有字符编码声明的XML。)

在第一种情况下,文档内编码声明显然​​是在撒谎,应该进行更改以便说明真相。

在第二种情况下,您应该提供正确的编码声明。根据您的输入具有瑞典字符和错误消息的措辞的陈述,我猜想输入是在ISO 8859的某些变体中编码的,可能是ISO 8859-1,-10或-15。

您的问题与XSLT无关,而且与您的输入是(a)不是UTF-8或UTF-16以及(b)未声明其字符编码这一事实有关。