-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updated xml.xsd to include version from 2005, that has a xml:id decl…
…aration; This has been introduced into the AKN schema since WD17
- Loading branch information
Showing
7 changed files
with
635 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
|
||
<?xml version='1.0'?> | ||
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en"> | ||
|
||
<xs:annotation> | ||
<xs:documentation> | ||
See http://www.w3.org/XML/1998/namespace.html and | ||
http://www.w3.org/TR/REC-xml for information about this namespace. | ||
|
||
This schema document describes the XML namespace, in a form | ||
suitable for import by other schema documents. | ||
|
||
Note that local names in this namespace are intended to be defined | ||
only by the World Wide Web Consortium or its subgroups. The | ||
following names are currently defined in this namespace and should | ||
not be used with conflicting semantics by any Working Group, | ||
specification, or document instance: | ||
|
||
base (as an attribute name): denotes an attribute whose value | ||
provides a URI to be used as the base for interpreting any | ||
relative URIs in the scope of the element on which it | ||
appears; its value is inherited. This name is reserved | ||
by virtue of its definition in the XML Base specification. | ||
|
||
id (as an attribute name): denotes an attribute whose value | ||
should be interpreted as if declared to be of type ID. | ||
The xml:id specification is not yet a W3C Recommendation, | ||
but this attribute is included here to facilitate experimentation | ||
with the mechanisms it proposes. Note that it is _not_ included | ||
in the specialAttrs attribute group. | ||
|
||
lang (as an attribute name): denotes an attribute whose value | ||
is a language code for the natural language of the content of | ||
any element; its value is inherited. This name is reserved | ||
by virtue of its definition in the XML specification. | ||
|
||
space (as an attribute name): denotes an attribute whose | ||
value is a keyword indicating what whitespace processing | ||
discipline is intended for the content of the element; its | ||
value is inherited. This name is reserved by virtue of its | ||
definition in the XML specification. | ||
|
||
Father (in any context at all): denotes Jon Bosak, the chair of | ||
the original XML Working Group. This name is reserved by | ||
the following decision of the W3C XML Plenary and | ||
XML Coordination groups: | ||
|
||
In appreciation for his vision, leadership and dedication | ||
the W3C XML Plenary on this 10th day of February, 2000 | ||
reserves for Jon Bosak in perpetuity the XML name | ||
xml:Father | ||
</xs:documentation> | ||
</xs:annotation> | ||
|
||
<xs:annotation> | ||
<xs:documentation>This schema defines attributes and an attribute group | ||
suitable for use by | ||
schemas wishing to allow xml:base, xml:lang, xml:space or xml:id | ||
attributes on elements they define. | ||
|
||
To enable this, such a schema must import this schema | ||
for the XML namespace, e.g. as follows: | ||
<schema . . .> | ||
. . . | ||
<import namespace="http://www.w3.org/XML/1998/namespace" | ||
schemaLocation="http://www.w3.org/2005/08/xml.xsd"/> | ||
|
||
Subsequently, qualified reference to any of the attributes | ||
or the group defined below will have the desired effect, e.g. | ||
|
||
<type . . .> | ||
. . . | ||
<attributeGroup ref="xml:specialAttrs"/> | ||
|
||
will define a type which will schema-validate an instance | ||
element with any of those attributes</xs:documentation> | ||
</xs:annotation> | ||
|
||
<xs:annotation> | ||
<xs:documentation>In keeping with the XML Schema WG's standard versioning | ||
policy, this schema document will persist at | ||
http://www.w3.org/2005/08/xml.xsd. | ||
At the date of issue it can also be found at | ||
http://www.w3.org/2001/xml.xsd. | ||
The schema document at that URI may however change in the future, | ||
in order to remain compatible with the latest version of XML Schema | ||
itself, or with the XML namespace itself. In other words, if the XML | ||
Schema or XML namespaces change, the version of this document at | ||
http://www.w3.org/2001/xml.xsd will change | ||
accordingly; the version at | ||
http://www.w3.org/2005/08/xml.xsd will not change. | ||
</xs:documentation> | ||
</xs:annotation> | ||
|
||
<xs:attribute name="lang"> | ||
<xs:annotation> | ||
<xs:documentation>Attempting to install the relevant ISO 2- and 3-letter | ||
codes as the enumerated possible values is probably never | ||
going to be a realistic possibility. See | ||
RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry | ||
at http://www.iana.org/assignments/lang-tag-apps.htm for | ||
further information. | ||
|
||
The union allows for the 'un-declaration' of xml:lang with | ||
the empty string.</xs:documentation> | ||
</xs:annotation> | ||
<xs:simpleType> | ||
<xs:union memberTypes="xs:language"> | ||
<xs:simpleType> | ||
<xs:restriction base="xs:string"> | ||
<xs:enumeration value=""/> | ||
</xs:restriction> | ||
</xs:simpleType> | ||
</xs:union> | ||
</xs:simpleType> | ||
</xs:attribute> | ||
|
||
<xs:attribute name="space"> | ||
<xs:simpleType> | ||
<xs:restriction base="xs:NCName"> | ||
<xs:enumeration value="default"/> | ||
<xs:enumeration value="preserve"/> | ||
</xs:restriction> | ||
</xs:simpleType> | ||
</xs:attribute> | ||
|
||
<xs:attribute name="base" type="xs:anyURI"> | ||
<xs:annotation> | ||
<xs:documentation>See http://www.w3.org/TR/xmlbase/ for | ||
information about this attribute.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
|
||
<xs:attribute name="id" type="xs:ID"> | ||
<xs:annotation> | ||
<xs:documentation>See http://www.w3.org/TR/xml-id/ for | ||
information about this attribute.</xs:documentation> | ||
</xs:annotation> | ||
</xs:attribute> | ||
|
||
<xs:attributeGroup name="specialAttrs"> | ||
<xs:attribute ref="xml:base"/> | ||
<xs:attribute ref="xml:lang"/> | ||
<xs:attribute ref="xml:space"/> | ||
</xs:attributeGroup> | ||
|
||
</xs:schema> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package org.akomantoso; | ||
|
||
import java.io.File; | ||
import java.io.IOException; | ||
import junit.framework.TestCase; | ||
import org.akomantoso.api.AnDocType; | ||
import org.akomantoso.api.AnParser; | ||
import org.akomantoso.api.AnVersion; | ||
|
||
/** | ||
* Test the validation of Akoma Ntoso documents, returns line number | ||
and column number when validation fails | ||
* @author Ashok Hariharan | ||
*/ | ||
public class TestAnParser_30release extends TestCase { | ||
|
||
AnVersion _version = new AnVersion(3, "release"); | ||
// file to parse and discover type | ||
File _parse = new File("./src/test/java/testdocs/akomantoso_doc_30release.xml"); | ||
|
||
|
||
public TestAnParser_30release(String testName) throws IOException { | ||
super(testName); | ||
} | ||
|
||
@Override | ||
protected void setUp() throws Exception { | ||
super.setUp(); | ||
} | ||
|
||
@Override | ||
protected void tearDown() throws Exception { | ||
super.tearDown(); | ||
} | ||
|
||
/** | ||
* Test of validate method, of class AnValidator. | ||
*/ | ||
public void testParse() throws Exception { | ||
System.out.println("parse"); | ||
// file 1 should validate | ||
AnDocType resultDoc = (new AnParser()).parse(_version, _parse); | ||
assertEquals(resultDoc.objClass, | ||
"org.akomantoso.schema.v3.release.OpenStructure"); | ||
assertEquals(resultDoc.typeName, | ||
"doc"); | ||
|
||
} | ||
} |
123 changes: 123 additions & 0 deletions
123
src/test/java/org/akomantoso/TestAnUnmarshallAndMarshall_30release.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
package org.akomantoso; | ||
|
||
import junit.framework.TestCase; | ||
import org.akomantoso.api.AnVersion; | ||
import org.akomantoso.schema.v3.release.*; | ||
|
||
import javax.xml.bind.*; | ||
import java.io.File; | ||
import java.io.FileNotFoundException; | ||
|
||
/** | ||
* Created by ashok on 20-May-17. | ||
*/ | ||
public class TestAnUnmarshallAndMarshall_30release extends TestCase { | ||
|
||
File _anDoc = new File("./src/test/java/testdocs/akomantoso_doc_30release.xml"); | ||
|
||
|
||
public TestAnUnmarshallAndMarshall_30release(String testName) { | ||
super(testName); | ||
} | ||
|
||
@Override | ||
protected void setUp() throws Exception { | ||
super.setUp(); | ||
} | ||
|
||
@Override | ||
protected void tearDown() throws Exception { | ||
super.tearDown(); | ||
} | ||
|
||
public void testUnmarshall_3_0() throws JAXBException { | ||
|
||
AnVersion version = null ; | ||
try { | ||
version = new AnVersion(3, "release"); | ||
} catch (FileNotFoundException ex) { | ||
// version does not exist ! | ||
} | ||
if (null == version) { | ||
fail("Schema not found !"); | ||
} | ||
JAXBContext jc = version.getContext(); | ||
Unmarshaller unmarshaller = jc.createUnmarshaller(); | ||
JAXBElement<AkomaNtosoType> anType = (JAXBElement<AkomaNtosoType>)unmarshaller.unmarshal(_anDoc); | ||
AkomaNtosoType anDoc = anType.getValue(); | ||
/** | ||
* <doc name="memorandum" contains="originalVersion"> | ||
*/ | ||
String aName = anDoc.getDoc().getName(); | ||
assertEquals("name attribute should be memorandum !", aName, | ||
(String)"memorandum"); | ||
VersionType vType = anDoc.getDoc().getContains(); | ||
assertEquals("contains should be 'originalVersion'", | ||
vType.value(), "originalVersion"); | ||
} | ||
|
||
/** | ||
* This test always passes, it demonstrates marshalling an Akoma Ntoso document | ||
* @throws JAXBException | ||
*/ | ||
public void testMarshall_3_0() throws JAXBException{ | ||
AnVersion ver=null; | ||
try { | ||
ver = new AnVersion(3, "release"); | ||
} catch (FileNotFoundException ex) { | ||
// schema does not exist | ||
} | ||
if (null == ver) { | ||
fail("Schema not found !"); | ||
} | ||
JAXBContext jc = ver.getContext(); | ||
Marshaller marshaller = jc.createMarshaller(); | ||
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, | ||
true); | ||
|
||
// create the root akomaNtoso element | ||
ObjectFactory of = new ObjectFactory(); | ||
AkomaNtosoType anType = new AkomaNtosoType(); | ||
OpenStructure ost = new OpenStructure(); | ||
ost.setName("test_doc"); | ||
ost.setContains(VersionType.SINGLE_VERSION); | ||
|
||
// create the meta element | ||
Meta meta = new Meta(); | ||
// create the publication tag | ||
Publication pub = new Publication(); | ||
pub.setWId("test_pub"); | ||
pub.setName("pub"); | ||
pub.setDate("2013-01-01"); | ||
pub.setNumber("42"); | ||
// add the publication element to the meta element | ||
meta.setPublication(pub); | ||
//create the identification element | ||
Identification idf = new Identification(); | ||
idf.setSource("#a_source"); | ||
//create a work element | ||
FRBRWork work = of.createFRBRWork(); | ||
//set FRBRthis on work | ||
ValueType vThis = new ValueType(); | ||
vThis.setValue("/ak/bill/2013-01-01/A1/memorandum"); | ||
work.setFRBRthis(vThis); | ||
//set FRBRuri on work | ||
ValueType vURI = new ValueType(); | ||
vURI.setValue("/ak/bill/2013-01-01/A1"); | ||
work.getFRBRuri().add(vURI); | ||
//add the identification to the work | ||
idf.setFRBRWork(work); | ||
//add the identifcatin on the meta | ||
meta.setIdentification(idf); | ||
//add the meta | ||
ost.setMeta(meta); | ||
//add the doc type to the akomaNtoso element | ||
anType.setDoc(ost); | ||
JAXBElement<AkomaNtosoType> rootElem = of.createAkomaNtoso(anType); | ||
marshaller.marshal(rootElem, System.out); | ||
assertEquals(true, true); | ||
} | ||
|
||
|
||
|
||
} |
57 changes: 57 additions & 0 deletions
57
src/test/java/org/akomantoso/TestAnValidatorTest_30release.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
package org.akomantoso; | ||
|
||
import junit.framework.TestCase; | ||
import org.akomantoso.api.AnValidator; | ||
import org.akomantoso.api.AnValidatorError; | ||
import org.akomantoso.api.AnVersion; | ||
|
||
import java.io.File; | ||
import java.io.IOException; | ||
|
||
/** | ||
* Created by ashok on 20-May-17. | ||
*/ | ||
public class TestAnValidatorTest_30release extends TestCase { | ||
|
||
AnVersion _version = new AnVersion(3, "release"); | ||
// test file 1 - this should validte | ||
File _validate1 = new File("./src/test/java/testdocs/akomantoso_doc_30release.xml"); | ||
// test file 2 - this should fail | ||
File _validate2 = new File("./src/test/java/testdocs/akomantoso_doc_30release_fail.xml"); | ||
|
||
AnValidator _validator = new AnValidator(); | ||
|
||
public TestAnValidatorTest_30release(String testName) throws IOException { | ||
super(testName); | ||
} | ||
|
||
@Override | ||
protected void setUp() throws Exception { | ||
super.setUp(); | ||
} | ||
|
||
@Override | ||
protected void tearDown() throws Exception { | ||
super.tearDown(); | ||
} | ||
|
||
/** | ||
* Test of validate method, of class AnValidator. | ||
*/ | ||
public void testValidate() throws Exception { | ||
System.out.println("validate"); | ||
// file 1 should validate | ||
AnValidatorError result = _validator.validate(_version, _validate1); | ||
assertEquals("Validation of file failed when it should have succeeded", | ||
result.isError(), false); | ||
// file 2 should fail, but failure should match specific line and col number | ||
result = _validator.validate(_version, _validate2); | ||
assertEquals("Validation of file succeeded when it should have failed", | ||
result.isError(), true); | ||
System.out.println("error details : "); | ||
System.out.println(" line : " + result.getLineNumber() + ", " | ||
+ "col : " + result.getColumnNumber()); | ||
assertEquals("line number should be 42 !", result.getLineNumber(), (Integer)42); | ||
assertEquals("col number should be 102 !", result.getColumnNumber(), (Integer)102); | ||
} | ||
} |
Oops, something went wrong.