You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by el...@apache.org on 2003/01/07 21:59:53 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/dom CoreDocumentImpl.java DOMNormalizer.java
elena 2003/01/07 12:59:52
Modified: java/src/org/apache/xerces/dom CoreDocumentImpl.java
DOMNormalizer.java
Log:
Update Id table during normalizeDocument operation
Revision Changes Path
1.38 +10 -1 xml-xerces/java/src/org/apache/xerces/dom/CoreDocumentImpl.java
Index: CoreDocumentImpl.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/CoreDocumentImpl.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- CoreDocumentImpl.java 31 Dec 2002 01:16:06 -0000 1.37
+++ CoreDocumentImpl.java 7 Jan 2003 20:59:52 -0000 1.38
@@ -1596,6 +1596,15 @@
return getIdentifier(elementId);
}
+ /**
+ * Remove all identifiers from the ID table
+ */
+ protected final void clearIdentifiers (){
+ if (identifiers != null){
+ identifiers.clear();
+ }
+ }
+
/**
* Registers an identifier name with a specified element node.
* If the identifier is already registered, the new element
1.23 +33 -5 xml-xerces/java/src/org/apache/xerces/dom/DOMNormalizer.java
Index: DOMNormalizer.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/DOMNormalizer.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- DOMNormalizer.java 31 Dec 2002 01:55:05 -0000 1.22
+++ DOMNormalizer.java 7 Jan 2003 20:59:52 -0000 1.23
@@ -64,6 +64,8 @@
import org.apache.xerces.dom3.DOMErrorHandler;
import org.apache.xerces.impl.Constants;
import org.apache.xerces.impl.RevalidationHandler;
+import org.apache.xerces.impl.dv.XSSimpleType;
+import org.apache.xerces.impl.xs.psvi.XSTypeDefinition;
import org.apache.xerces.util.AugmentationsImpl;
import org.apache.xerces.util.NamespaceSupport;
import org.apache.xerces.util.SymbolTable;
@@ -218,8 +220,12 @@
// check if we need to fill in PSVI
fPSVI = ((fConfiguration.features & DOMConfigurationImpl.PSVI) !=0)?true:false;
- // REVISIT: pass namespace context to the XML Schema validator
- ((XMLComponent) fValidationHandler).reset(fConfiguration);
+
+ // reset ID table
+ fDocument.clearIdentifiers();
+
+ // reset schema validator
+ ((XMLComponent) fValidationHandler).reset(fConfiguration);
}
fErrorHandler = (DOMErrorHandler) fConfiguration.getParameter("error-handler");
@@ -739,6 +745,9 @@
*/
// XML 1.0 Attribute value normalization
value = normalizeAttributeValue(value, attr);
+
+ // reset id-attributes
+ ((AttrImpl)attr).setIdAttribute(false);
uri = fSymbolTable.addSymbol(uri);
@@ -793,6 +802,9 @@
int colon = name.indexOf(':');
// XML 1.0 Attribute value normalization
value = normalizeAttributeValue(value, attr);
+ // reset id-attributes
+ ((AttrImpl)attr).setIdAttribute(false);
+
if (colon > -1) {
// It is an error if document has DOM L1 nodes.
boolean continueProcess = true;
@@ -1067,7 +1079,7 @@
}
- public void setType(int attrIndex, String attrType){
+ public void setType(int attrIndex, String attrType){
// REVISIT: implement
}
@@ -1292,10 +1304,26 @@
Attr attr = null;
attr = currentElement.getAttributeNodeNS(fAttrQName.uri, fAttrQName.localpart);
- AttributePSVI attrPSVI =
+ AttributePSVI attrPSVI =
(AttributePSVI) attributes.getAugmentations(i).getItem(Constants.ATTRIBUTE_PSVI);
if (attrPSVI != null) {
+ //REVISIT: instead we should be using augmentations:
+ // to set/retrieve Id attributes
+ XSTypeDefinition decl = attrPSVI.getMemberTypeDefinition();
+ boolean id = false;
+ if (decl != null){
+ id = ((XSSimpleType)decl).isIDType();
+ } else{
+ decl = attrPSVI.getTypeDefinition();
+ if (decl !=null){
+ id = ((XSSimpleType)decl).isIDType();
+ }
+ }
+ if (id){
+ ((ElementImpl)currentElement).setIdAttributeNode(attr);
+ }
+
if (fPSVI) {
((PSVIAttrNSImpl) attr).setPSVI(attrPSVI);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org