neilg 2003/07/30 12:22:22 Modified: java/samples/xni PSVIWriter.java Log: fixing several small bugs in the PSVIWriter, found and fixed by Peter McCracken. Revision Changes Path 1.20 +30 -10 xml-xerces/java/samples/xni/PSVIWriter.java Index: PSVIWriter.java =================================================================== RCS file: /home/cvs/xml-xerces/java/samples/xni/PSVIWriter.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- PSVIWriter.java 28 Jul 2003 15:38:31 -0000 1.19 +++ PSVIWriter.java 30 Jul 2003 19:22:22 -0000 1.20 @@ -1063,18 +1063,18 @@ } private void processPSVISchemaComponents(XSNamespaceItem item) { - // typeDefinitions - XSNamedMap components = - item == null - ? null - : item.getComponents(XSConstants.TYPE_DEFINITION); - - if (components == null || components.getLength() == 0) { + if (item == null) { sendEmptyElementEvent("psv:schemaComponents"); return; - } + + // it we happen to not get any components, this will output a start tag + // and a close tag, instead of an empty element tag. This isn't a big + // deal, though sendIndentedElement("psv:schemaComponents"); + + // typeDefinitions + XSNamedMap components = item.getComponents(XSConstants.TYPE_DEFINITION); for (int i = 0; i < components.getLength(); i++) { processPSVITypeDefinition((XSTypeDefinition)components.item(i)); } @@ -1642,7 +1642,7 @@ sendIndentedElement("psv:term"); switch (part.getTerm().getType()) { case XSConstants.ELEMENT_DECLARATION : - processPSVIElementDeclaration( + processPSVIElementDeclarationOrRef( (XSElementDeclaration)part.getTerm()); break; case XSConstants.MODEL_GROUP : @@ -1747,6 +1747,26 @@ } } + private void processPSVIElementDeclarationRef(XSElementDeclaration elem) { + if (elem == null) + return; + processPSVIElementRef("psv:elementDeclaration", elem); + } + + private void processPSVIElementDeclarationOrRef(XSElementDeclaration elem) { + if (elem == null) + return; + // for global attributes, and attributes that have already been printed, + // we always want to print references + if (elem.getScope() == XSConstants.SCOPE_GLOBAL + || fDefined.contains(this.getID(elem))) { + processPSVIElementDeclarationRef(elem); + } + else { + processPSVIElementDeclaration(elem); + } + } + /** * This method writes an empty element at the current indent level. *
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]