2016-12-27 265 views
0

我试图运行probatron4j。这里是源项目SXXP0003:XML解析器报告的错误:schematron xml中的prolog中不允许使用内容

https://code.google.com/archive/p/probatron4j/downloads

我使用Ant构建这个项目,我在蒸馏水文件夹了probatron.jar。

但是当我尝试验证我对Schematron模式XML这正显示出

C:\Users\sukumar\Downloads\probatron4j-source-0.7.4>java -jar dist\probatron.jar xml\sample.xml sch\sample.sch   Error on line 4 column 16 
SXXP0003: Error reported by XML parser: Content is not allowed in prolog.            
FATAL org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 16; Content is not allowed in prolog.     
Exception in thread "main" java.lang.RuntimeException: Cannot instantiate XSLT transformer, 
or transformation failure: org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 16; Content is not allowed in prolog. 

at org.probatron.SchematronSchema.validateCandidate(Unknown Source)              at org.probatron.SchematronSchema.validateCandidate(Unknown Source) 

at org.probatron.Session.doValidation(Unknown Source)                 
    at org.probatron.Driver.main(Unknown Source)                  
Caused by: net.sf.saxon.trans.XPathException: org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 16; Content is not allowed in prolog.                           
at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:418)                at net.sf.saxon.event.Sender.send(Sender.java:214)                  
at net.sf.saxon.event.Sender.send(Sender.java:50)                  at net.sf.saxon.Controller.transform(Controller.java:1611)                
... 4 more                          
Caused by: org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 16; Content is not allowed in prolog.     
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)                                
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)     
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)     
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)      
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)        
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:999)                                
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)     
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)    
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)                             
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)      
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)     
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)          
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)      
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648)    
at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:404)                ... 7 more 

这里是Schematron的XML

<?xml version="1.0" encoding="utf-8"?> 
<schema xmlns="http://www.ascc.net/xml/schematron" > 
     <pattern name="Print negative result only"> 
      <rule context="AAA"> 
       <assert test="BBB">BBB element is missing.</assert> 
       <assert test="@name">AAA misses attribute name.</assert> 
      </rule> 
    </pattern> 
</schema> 

和XML需要测试

<AAA> 
    <BBB/> 
</AAA> 

我用来运行jar文件的命令

C:\Users\sukumar\Downloads\probatron4j-source-0.7.4>java -jar dist\probatron.jar xml\sample.xml sch\sample.sch 

回答

0

Schematron命名空间存在问题。我已经改变了命名空间

xmlns="http://www.ascc.net/xml/schematron" 

这个

xmlns="http://purl.oclc.org/dsdl/schematron" 
      xmlns:sch="http://purl.oclc.org/dsdl/schematron" 
      xmlns:sh="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader" 
      xmlns:ef="http://www.efatura.gov.tr/envelope-namespace" 

并为我工作。