You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mu...@apache.org on 2010/02/02 17:30:44 UTC
svn commit: r905694 -
/xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java
Author: mukulg
Date: Tue Feb 2 16:30:33 2010
New Revision: 905694
URL: http://svn.apache.org/viewvc?rev=905694&view=rev
Log:
Adding support for minOccurs & maxOccurs attributes on xs:element, while serializing an XSModel
Modified:
xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java
Modified: xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java?rev=905694&r1=905693&r2=905694&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java Tue Feb 2 16:30:33 2010
@@ -177,7 +177,8 @@
// iterating global element declarations in the Schema
for (int elemIdx = 0; elemIdx < globalElemDecls.size(); elemIdx++) {
XSElementDecl elemDecl = (XSElementDecl) globalElemDecls.item(elemIdx);
- addElementDeclToSchemaComponent(document, schemaDeclDomNode, elemDecl);
+ addElementDeclToSchemaComponent(document, schemaDeclDomNode,
+ elemDecl, null, null, true);
}
} // end of, processGolabElementDecl
@@ -186,13 +187,16 @@
*/
private void addElementDeclToSchemaComponent(Document document,
Element parentDomNode,
- XSElementDecl elemDecl)
+ XSElementDecl elemDecl,
+ String minOccurs,
+ String maxOccurs,
+ boolean isGlobal)
throws DOMException {
String elemName = elemDecl.getName();
Element elemDeclDomNode = document.createElementNS(XSD_LANGUAGE_URI,
XSD_LANGUAGE_PREFIX
+ "element");
- elemDeclDomNode.setAttributeNS(null, "name", elemName);
+ elemDeclDomNode.setAttributeNS(null, "name", elemName);
XSTypeDefinition typeDef = elemDecl.getTypeDefinition();
if (!typeDef.getAnonymous()) {
@@ -223,6 +227,16 @@
typeDef);
}
}
+
+ // add possible, minOccurs & maxOccurs attributes
+ if (!isGlobal) {
+ if (minOccurs != null) {
+ elemDeclDomNode.setAttributeNS(null, "minOccurs", minOccurs);
+ }
+ if (maxOccurs != null) {
+ elemDeclDomNode.setAttributeNS(null, "maxOccurs", maxOccurs);
+ }
+ }
parentDomNode.appendChild(elemDeclDomNode);
@@ -565,13 +579,19 @@
XSObjectList compositorChildren = modelGroup.getParticles();
for (int seqIdx = 0; seqIdx < compositorChildren.getLength(); seqIdx++) {
XSObject seqItem = compositorChildren.item(seqIdx);
- XSParticle seqParticle = (XSParticle) seqItem;
- XSTerm partclTerm = seqParticle.getTerm();
+ XSParticle seqParticle = (XSParticle) seqItem;
+ String minOccurs = getMinOccursVal(seqParticle);
+ String maxOccurs = getMaxOccursVal(seqParticle);
+
+ XSTerm partclTerm = seqParticle.getTerm();
if (partclTerm instanceof XSElementDeclaration) {
XSElementDecl elemDecl = (XSElementDecl) partclTerm;
addElementDeclToSchemaComponent(document,
- sequenceDeclDomNode,
- elemDecl);
+ sequenceDeclDomNode,
+ elemDecl,
+ minOccurs,
+ maxOccurs,
+ false);
}
// handle more compositor children like, group | choice |
@@ -599,11 +619,17 @@
for (int prtclIdx = 0; prtclIdx < modelParticles.getLength();
prtclIdx++) {
XSParticle partclItem = (XSParticle) modelParticles.item(prtclIdx);
+ String minOccurs = getMinOccursVal(partclItem);
+ String maxOccurs = getMaxOccursVal(partclItem);
+
XSTerm partclTerm = partclItem.getTerm();
if (partclTerm instanceof XSElementDeclaration) {
addElementDeclToSchemaComponent(document,
allDeclDomNode,
- (XSElementDecl) partclTerm);
+ (XSElementDecl) partclTerm,
+ minOccurs,
+ maxOccurs,
+ false);
}
else if (partclTerm instanceof XSWildcard) {
XSWildcardDecl wildCardDecl = (XSWildcardDecl) partclTerm;
@@ -754,5 +780,38 @@
// unreach
return null;
}
+
+ /*
+ * Given an XSD particle, get it's minOccurs value as a String.
+ */
+ private String getMinOccursVal(XSParticle particle) {
+ String minOccursStr = null;
+
+ int minOccurs = particle.getMinOccurs();
+ if (minOccurs != 1) {
+ minOccursStr = String.valueOf(minOccurs);
+ }
+
+ return minOccursStr;
+ }
+
+ /*
+ * Given an XSD particle, get it's maxOccurs value as a String.
+ */
+ private String getMaxOccursVal(XSParticle particle) {
+ String maxOccursStr = null;
+
+ int maxOccurs = particle.getMaxOccurs();
+ if (particle.getMaxOccursUnbounded()) {
+ maxOccursStr = "unbounded";
+ }
+ else {
+ if (maxOccurs != 1) {
+ maxOccursStr = String.valueOf(maxOccurs);
+ }
+ }
+
+ return maxOccursStr;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org