2016-08-04 67 views
0

我在写一个XSLT并在java中运行它。我正在使用Saxon。当我运行我的程序时,我得到了下面的异常。xslt在输出方法创建时出现混乱

Error at xsl:value-of on line 314 of chapters.xsl: 
    SERE0014: Illegal HTML character: decimal 157 
    at xsl:call-template name="entry" (file:///C:/Users/u0138039/Desktop/Proview/HK/2016/COMPORD/final/XSLT/chapters.xsl#417) 
    in built-in template rule 
    at xsl:apply-templates (file:///C:/Users/u0138039/Desktop/Proview/HK/2016/COMPORD/final/XSLT/chapters.xsl#385) 
    processing /chapter/section[1]/section[5]/table[1]/tgroup[1]/tbody[1] 
    at xsl:apply-templates (file:///C:/Users/u0138039/Desktop/Proview/HK/2016/COMPORD/final/XSLT/chapters.xsl#370) 
    processing /chapter/section[1]/section[5]/table[1]/tgroup[1] 
    at xsl:apply-templates (file:///C:/Users/u0138039/Desktop/Proview/HK/2016/COMPORD/final/XSLT/chapters.xsl#205) 
    processing /chapter/section[1]/section[5]/table[1] 
    at xsl:apply-templates (file:///C:/Users/u0138039/Desktop/Proview/HK/2016/COMPORD/final/XSLT/chapters.xsl#205) 
    processing /chapter/section[1]/section[5] 
    at xsl:apply-templates (file:///C:/Users/u0138039/Desktop/Proview/HK/2016/COMPORD/final/XSLT/chapters.xsl#61) 
    processing /chapter/section[1] 
    at xsl:apply-templates (file:///C:/Users/u0138039/Desktop/Proview/HK/2016/COMPORD/final/XSLT/chapters.xsl#19) 
    processing /chapter 
; SystemID: file:///C:/Users/u0138039/Desktop/Proview/HK/2016/COMPORD/final/XSLT/chapters.xsl; Line#: 314; Column#: -1 
net.sf.saxon.trans.XPathException: Illegal HTML character: decimal 157 
    at net.sf.saxon.serialize.HTMLEmitter.writeEscape(HTMLEmitter.java:366) 
    at net.sf.saxon.serialize.XMLEmitter.characters(XMLEmitter.java:594) 
    at net.sf.saxon.serialize.HTMLEmitter.characters(HTMLEmitter.java:428) 
    at net.sf.saxon.serialize.HTMLIndenter.characters(HTMLIndenter.java:255) 
    at net.sf.saxon.event.ProxyReceiver.characters(ProxyReceiver.java:194) 
    at net.sf.saxon.event.ProxyReceiver.characters(ProxyReceiver.java:194) 
    at net.sf.saxon.event.ProxyReceiver.characters(ProxyReceiver.java:194) 
    at net.sf.saxon.event.ProxyReceiver.characters(ProxyReceiver.java:194) 
    at net.sf.saxon.event.ComplexContentOutputter.characters(ComplexContentOutputter.java:174) 
    at net.sf.saxon.expr.instruct.ValueOf.processValue(ValueOf.java:295) 
    at net.sf.saxon.expr.instruct.SimpleNodeConstructor.processLeavingTail(SimpleNodeConstructor.java:222) 
    at net.sf.saxon.expr.instruct.ValueOf.processLeavingTail(ValueOf.java:280) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.AnalyzeString.processLeavingTail(AnalyzeString.java:443) 
    at net.sf.saxon.expr.instruct.Template.applyLeavingTail(Template.java:336) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1124) 
    at net.sf.saxon.expr.instruct.ApplyTemplates$ApplyTemplatesPackage.processLeavingTail(ApplyTemplates.java:516) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1061) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:284) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:244) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Template.expand(Template.java:367) 
    at net.sf.saxon.expr.instruct.CallTemplate.process(CallTemplate.java:343) 
    at net.sf.saxon.expr.instruct.ForEach.processLeavingTail(ForEach.java:419) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Template.applyLeavingTail(Template.java:336) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1124) 
    at net.sf.saxon.trans.TextOnlyCopyRuleSet.process(TextOnlyCopyRuleSet.java:65) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1100) 
    at net.sf.saxon.expr.instruct.ApplyTemplates$ApplyTemplatesPackage.processLeavingTail(ApplyTemplates.java:516) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1061) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:284) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:244) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Template.applyLeavingTail(Template.java:336) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1124) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:284) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:244) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Template.applyLeavingTail(Template.java:336) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1124) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:284) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:244) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Template.applyLeavingTail(Template.java:336) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1124) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:284) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:244) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Template.applyLeavingTail(Template.java:336) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1124) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:284) 
    at net.sf.saxon.expr.instruct.ApplyTemplates.processLeavingTail(ApplyTemplates.java:244) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Instruction.process(Instruction.java:144) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:450) 
    at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:389) 
    at net.sf.saxon.expr.instruct.Block.processLeavingTail(Block.java:669) 
    at net.sf.saxon.expr.instruct.Template.applyLeavingTail(Template.java:336) 
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:1124) 
    at net.sf.saxon.Controller.transformDocument(Controller.java:2106) 
    at net.sf.saxon.Controller.transform(Controller.java:1705) 
    at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:547) 
    at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:177) 
    at com.s1a.alpha.APP2.main(APP2.java:74) 

而且我已经改变了我的输出methon到xml,它最初是html。令我惊讶的是,没有异常,并生成文件。我很好奇,想知道如何和为什么这个失败html和成功与xml

感谢

+0

您可以显示错误来源的'xsl:on line 314'值吗?谢谢! –

+0

@TimC'\t的 \t \t \t \t \t的 \t \t \t \t'中这块我已经''in line 314 – user3872094

回答

0

https://www.w3.org/TR/xslt-xquery-serialization/#html-output,它需要

某些字符,特别是控制字符#x7F-#x9F ,在XML中为 合法,但不在HTML中。当数据模型的实例中出现这种字符 时,这是一个序列化错误 [err:SERE0014]以使用HTML输出方法。串行器必须发出信号 错误。

十进制157是十六进制9D,所以它在这个范围内。

0

当x80-x9f范围内的字符出现在您的输入中时,通常意味着该文件采用Windows-1252编码,但被错误标记为ISO-8859-1。不过,我有点惊讶地发现x9D造成了麻烦,因为这在Windows-1252中是未分配的。你认为它应该是什么性格?

请注意,如果您指定HTML版本5.0作为输出方法,那么@MartinHonnen引用的规则对于XSLT 3.0是宽松的。但是,如果包含此类字符的输入有问题,则不会改变这一事实。

还要注意,这个范围内的字符在XML 1.0中是不允许的,但是它们在XML 1.1中是允许的。你没有给我们足够的信息来看看这个流氓角色如何进入系统。

+0

Hi @Michael Kay,我将HTML版本更改为5.0,它工作正常。但是我很想知道后端发生了什么。 – user3872094