2013-08-14 4 views
0

이 XML 파일XML 스키마 트론 Validaton

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <a>Only Text</a> 
    <a> 
    <b>Child node</b> 
    </a> 
    <a> 
    <b>Child node</b> 
    Mixed content 
    </a> 
</root> 

이 XSD 파일

<?xml version="1.0" encoding="UTF-8"?> 
<iso:schema xmlns:iso="http://purl.oclc.org/dsdl/schematron"> 
    <iso:pattern id="children tests"> 
    <iso:rule context="a"> 
     <iso:assert test="empty(child::node())"> 
     Element has nodes 
     </iso:assert> 
     <iso:assert test="empty(child::*)"> 
     Element has child elements 
     </iso:assert> 
     <iso:assert test="empty(child::text())"> 
     Element has text 
     </iso:assert> 
     <iso:report test="child::text() and empty(child::*)"> 
     Element has only text 
     </iso:report> 
    </iso:rule> 
    </iso:pattern> 
</iso:schema> 

Validator validator = new Validator(); 
       //validator.XmlSchemas.Add("", @"C:\project\Schematron\ConsoleApplication2\shematron\pdfdogschematron.sch"); 
       validator.AddSchema(@"C:\project\Schematron\ConsoleApplication2\shematron\book.xsd"); 
       IXPathNavigable a = validator.Validate(new XmlTextReader(@"C:\project\Schematron\ConsoleApplication2\shematron\dog.xml")); 

내가 NMatrix.Schematron 검사기를 사용하고 있지만, 그렇지 않은이 코드 correctly.The 항상 예외는 아닙니다.

+0

Btw를 사용하는 것이 좋습니다.이 샘플의 출처는 다음과 같습니다. http://stackoverflow.com/questions/14651586/identify-xml-text-elements-with- schematron 어쩌면 당신은 거기에서 업데이트 된 규칙과 함께 Schematron 예외를 얻을 ... – Clemens

답변

0

내가 제안 할 수있는 첫 번째 문제는 네이티브 .NET Schematron 1.5 검사기 인 NMatrix.Schematron을 사용하고 있다는 것입니다. ISO 스키마 트론은 지원하지 않습니다. XRouter SchemaTron (here)