/**
* A notation declaration
*
* @param name The name of the notation.
* @param identifier An object containing all location information
* pertinent to this notation.
* @param augs Additional information that may include infoset
* augmentations.
*
* @throws XNIException Thrown by handler to signal an error.
*/
public void notationDecl (String name, XMLResourceIdentifier identifier,
Augmentations augs) throws XNIException {
// internal subset string
String publicId = identifier.getPublicId ();
String literalSystemId = identifier.getLiteralSystemId ();
if (fInternalSubset != null && !fInDTDExternalSubset) {
fInternalSubset.append ("
fInternalSubset.append (name);
if (publicId != null) {
fInternalSubset.append (" PUBLIC '");
fInternalSubset.append (publicId);
if (literalSystemId != null) {
fInternalSubset.append ("' '");
fInternalSubset.append (literalSystemId);
}
}
else {
fInternalSubset.append (" SYSTEM '");
fInternalSubset.append (literalSystemId);
}
fInternalSubset.append ("'>\n");
}
// NOTE: We only know how to create these nodes for the Xerces
// DOM implementation because DOM Level 2 does not specify
// that functionality. -Ac
// create full node
if (fDocumentImpl !=null && fDocumentType != null) {
NamedNodeMap notations = fDocumentType.getNotations ();
if (notations.getNamedItem (name) == null) {
NotationImpl notation = (NotationImpl)fDocumentImpl.createNotation (name);
notation.setPublicId (publicId);
notation.setSystemId (literalSystemId);
notation.setBaseURI (identifier.getBaseSystemId ());
notations.setNamedItem (notation);
}
}
// create deferred node
if (fDocumentTypeIndex != -1) {
boolean found = false;
int nodeIndex = fDeferredDocumentImpl.getLastChild (fDocumentTypeIndex, false);
while (nodeIndex != -1) {
short nodeType = fDeferredDocumentImpl.getNodeType (nodeIndex, false);
if (nodeType == Node.NOTATION_NODE) {
String nodeName = fDeferredDocumentImpl.getNodeName (nodeIndex, false);
if (nodeName.equals (name)) {
found = true;
break;
}
}
nodeIndex = fDeferredDocumentImpl.getPrevSibling (nodeIndex, false);
}
if (!found) {
int notationIndex = fDeferredDocumentImpl.createDeferredNotation (
name, publicId, literalSystemId, identifier.getBaseSystemId ());
fDeferredDocumentImpl.appendChild (fDocumentTypeIndex, notationIndex);
}
}
}