You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2003/11/10 01:59:46 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/dtd XMLDTDProcessor.java
mrglavas 2003/11/09 16:59:46
Modified: java/src/org/apache/xerces/impl/dtd XMLDTDProcessor.java
Log:
We weren't checking either of the UniqueNotationName or NoNotationOnEmptyElement VCs.
Thanks to Neil Delima for the patch for UniqueNotationName.
Revision Changes Path
1.11 +29 -3 xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDProcessor.java
Index: XMLDTDProcessor.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDProcessor.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- XMLDTDProcessor.java 7 Nov 2003 00:26:18 -0000 1.10
+++ XMLDTDProcessor.java 10 Nov 2003 00:59:46 -0000 1.11
@@ -327,7 +327,7 @@
if (!parser_settings) {
// parser settings have not been changed
- reset();
+ reset();
return;
}
@@ -943,7 +943,7 @@
}
//
- // VC: One Notaion Per Element Type, should check if there is a
+ // VC: One Notation Per Element Type, should check if there is a
// duplicate NOTATION attribute
if (type == XMLSymbols.fNOTATIONSymbol) {
@@ -1230,6 +1230,17 @@
public void notationDecl(String name, XMLResourceIdentifier identifier,
Augmentations augs) throws XNIException {
+ // VC: Unique Notation Name
+ if (fValidation) {
+ DTDGrammar grammar = (fDTDGrammar != null ? fDTDGrammar : fGrammarBucket.getActiveGrammar());
+ if (grammar.getNotationDeclIndex(name) != -1) {
+ fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
+ "UniqueNotationName",
+ new Object[]{name},
+ XMLErrorReporter.SEVERITY_ERROR);
+ }
+ }
+
// call handlers
if(fDTDGrammar != null)
fDTDGrammar.notationDecl(name, identifier, augs);
@@ -1332,6 +1343,21 @@
fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
"MSG_NOTATION_NOT_DECLARED_FOR_NOTATIONTYPE_ATTRIBUTE",
new Object[]{attributeName, notation},
+ XMLErrorReporter.SEVERITY_ERROR);
+ }
+ }
+
+ // VC: No Notation on Empty Element
+ // An attribute of type NOTATION must not be declared on an element declared EMPTY.
+ Enumeration elementsWithNotations = fTableOfNOTATIONAttributeNames.keys();
+ while (elementsWithNotations.hasMoreElements()) {
+ String elementName = (String) elementsWithNotations.nextElement();
+ int elementIndex = grammar.getElementDeclIndex(elementName);
+ if (grammar.getContentSpecType(elementIndex) == XMLElementDecl.TYPE_EMPTY) {
+ String attributeName = (String) fTableOfNOTATIONAttributeNames.get(elementName);
+ fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
+ "NoNotationOnEmptyElement",
+ new Object[]{elementName, attributeName},
XMLErrorReporter.SEVERITY_ERROR);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org