X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FSchemaConversionBase.java;fp=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FSchemaConversionBase.java;h=5df8c4aefcbf4736d477410f4599c65c26286249;hb=404be73748777cdd2d09b2f29308ae6f4a3d730c;hp=d80f94ce6b03950accf6c3673852826634182b75;hpb=28cdb08c2dcc6b306d8a0cbea8c0bd791e42d583;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConversionBase.java b/org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConversionBase.java index d80f94c..5df8c4a 100644 --- a/org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConversionBase.java +++ b/org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConversionBase.java @@ -38,6 +38,7 @@ import org.w3._2001.xmlschema.NamedAttributeGroup; import org.w3._2001.xmlschema.OpenAttrs; import org.w3._2001.xmlschema.Restriction; import org.w3._2001.xmlschema.Schema; +import org.w3._2001.xmlschema.SimpleContent; import org.w3._2001.xmlschema.SimpleType; import org.w3._2001.xmlschema.TopLevelAttribute; import org.w3._2001.xmlschema.TopLevelComplexType; @@ -265,6 +266,23 @@ public abstract class SchemaConversionBase { throw new RuntimeException("Groups not supported"); } } + if (ct.getSimpleContent() != null) { + SimpleContent cc = ct.getSimpleContent(); + ExtensionType extensionType = cc.getExtension(); + if (extensionType != null) { + if (extensionType.getChoice() != null) { + preload(object,extensionType.getChoice(), stack); + } + if (extensionType.getSequence()!= null) { + preload(object,extensionType.getSequence(), stack); + } + if (extensionType.getAll()!= null) { + preload(object,extensionType.getAll(), stack); + } + if (extensionType.getGroup() != null) + throw new RuntimeException("Groups not supported"); + } + } } else if (object.getType() == ObjectType.ELEMENT) { Element e = object.getElement(); if (e instanceof TopLevelElement) @@ -330,6 +348,14 @@ public abstract class SchemaConversionBase { return type; } } +// SimpleContent simpleContent = complexType.getSimpleContent(); +// if (simpleContent != null) { +// ExtensionType extensionType = simpleContent.getExtension(); +// if (extensionType != null) { +// QName type = extensionType.getBase(); +// return type; +// } +// } return null; } @@ -385,6 +411,13 @@ public abstract class SchemaConversionBase { handleAttributes(complexType, extensionType.getAttributeOrAttributeGroup()); } } + SimpleContent simpleContent = complexType.getComplexType().getSimpleContent(); + if (simpleContent != null) { + ExtensionType extensionType = simpleContent.getExtension(); + if (extensionType != null) { + handleAttributes(complexType, extensionType.getAttributeOrAttributeGroup()); + } + } } @@ -696,6 +729,10 @@ public abstract class SchemaConversionBase { } } } +// SimpleContent simpleContent = complexType.getSimpleContent(); +// if (simpleContent != null) { +// ExtensionType extensionType = simpleContent.getExtension(); +// } } } @@ -713,28 +750,15 @@ public abstract class SchemaConversionBase { protected boolean isElementRef(String ref) { -// for (OpenAttrs attrs : schema.getSimpleTypeOrComplexTypeOrGroup()) { -// if (attrs instanceof TopLevelElement) { -// TopLevelElement element = (TopLevelElement)attrs; -// if (ref.equals(element.getName())) -// return true; -// } -// } -// return false; return elementName.containsKey(ref); } protected boolean isComplexTypeRef(String ref) { -// for (OpenAttrs attrs : schema.getSimpleTypeOrComplexTypeOrGroup()) { -// if (attrs instanceof TopLevelComplexType) { -// TopLevelComplexType element = (TopLevelComplexType)attrs; -// if (ref.equals(element.getName())) -// return true; -// } -// } -// return false; return complexTypeName.containsKey(ref); - + } + + protected boolean isSimpleTypeRef(String ref) { + return simpleTypeName.containsKey(ref); } protected NamedAttributeGroup getAttributeGroup(String name) {