输出方法中的xslt创建中的混淆

时间:2016-08-04 08:17:36

标签: java xml xslt

我正在编写XSLT并在java中运行它。我正在使用Saxon。当我运行我的程序时,我得到了以下异常。

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)

我已将输出法检测器更改为xml,最初为html。令我惊讶的是,没有Exception并且生成了文件。我很想知道,html如何以及为什么失败并成功使用xml

由于

2 个答案:

答案 0 :(得分:0)

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

  

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

十进制157是十六进制的9D,因此它在该范围内。

答案 1 :(得分:0)

当输入中出现x80-x9f范围内的字符时,通常表示该文件采用Windows-1252编码,但已被错误标记为ISO-8859-1。但是,我有点惊讶地看到x9D导致了麻烦,因为这在Windows-1252中未被分配。你觉得它应该是什么角色?

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

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