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]