KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > org > apache > xerces > internal > impl > xs > traversers > XSDNotationTraverser


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2001-2004 The Apache Software Foundation. All rights
6  * reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Xerces" and "Apache Software Foundation" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache",
33  * nor may "Apache" appear in their name, without prior written
34  * permission of the Apache Software Foundation.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  * ====================================================================
49  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the Apache Software Foundation and was
52  * originally based on software copyright (c) 2001, International
53  * Business Machines, Inc., http://www.apache.org. For more
54  * information on the Apache Software Foundation, please see
55  * <http://www.apache.org/>.
56  */

57
58 package com.sun.org.apache.xerces.internal.impl.xs.traversers;
59
60 import com.sun.org.apache.xerces.internal.impl.xs.SchemaGrammar;
61 import com.sun.org.apache.xerces.internal.impl.xs.SchemaSymbols;
62 import com.sun.org.apache.xerces.internal.impl.xs.XSAnnotationImpl;
63 import com.sun.org.apache.xerces.internal.impl.xs.XSNotationDecl;
64 import com.sun.org.apache.xerces.internal.util.DOMUtil;
65 import org.w3c.dom.Element JavaDoc;
66
67 /**
68  * The notation declaration schema component traverser.
69  *
70  * <notation
71  * id = ID
72  * name = NCName
73  * public = anyURI
74  * system = anyURI
75  * {any attributes with non-schema namespace . . .}>
76  * Content: (annotation?)
77  * </notation>
78  *
79  * @author Rahul Srivastava, Sun Microsystems Inc.
80  * @author Elena Litani, IBM
81  * @version $Id: XSDNotationTraverser.java,v 1.12 2004/01/22 15:22:53 sandygao Exp $
82  */

83 class XSDNotationTraverser extends XSDAbstractTraverser {
84
85     XSDNotationTraverser (XSDHandler handler,
86                           XSAttributeChecker gAttrCheck) {
87         super(handler, gAttrCheck);
88     }
89
90     XSNotationDecl traverse(Element JavaDoc elmNode,
91                             XSDocumentInfo schemaDoc,
92                             SchemaGrammar grammar) {
93
94         // General Attribute Checking for elmNode
95
Object JavaDoc[] attrValues = fAttrChecker.checkAttributes(elmNode, true, schemaDoc);
96         //get attributes
97
String JavaDoc nameAttr = (String JavaDoc) attrValues[XSAttributeChecker.ATTIDX_NAME];
98
99         String JavaDoc publicAttr = (String JavaDoc) attrValues[XSAttributeChecker.ATTIDX_PUBLIC];
100         String JavaDoc systemAttr = (String JavaDoc) attrValues[XSAttributeChecker.ATTIDX_SYSTEM];
101         if (nameAttr == null) {
102             reportSchemaError("s4s-att-must-appear", new Object JavaDoc[]{SchemaSymbols.ELT_NOTATION, SchemaSymbols.ATT_NAME}, elmNode);
103             fAttrChecker.returnAttrArray(attrValues, schemaDoc);
104             return null;
105         }
106
107         if (systemAttr == null && publicAttr == null)
108             reportSchemaError("s4s-att-must-appear", new Object JavaDoc[]{SchemaSymbols.ELT_NOTATION, "system or public"}, elmNode);
109         XSNotationDecl notation = new XSNotationDecl();
110         notation.fName = nameAttr;
111         notation.fTargetNamespace = schemaDoc.fTargetNamespace;
112         notation.fPublicId = publicAttr;
113         notation.fSystemId = systemAttr;
114
115         //check content
116
Element JavaDoc content = DOMUtil.getFirstChildElement(elmNode);
117         XSAnnotationImpl annotation = null;
118
119         if (content != null) {
120             // traverse annotation if any
121
if (DOMUtil.getLocalName(content).equals(SchemaSymbols.ELT_ANNOTATION)) {
122                 annotation = traverseAnnotationDecl(content, attrValues, false, schemaDoc);
123                 content = DOMUtil.getNextSiblingElement(content);
124             }
125         }
126         notation.fAnnotation = annotation;
127         if (content!=null){
128              Object JavaDoc[] args = new Object JavaDoc [] {SchemaSymbols.ELT_NOTATION, "(annotation?)", DOMUtil.getLocalName(content)};
129              reportSchemaError("s4s-elt-must-match.1", args, content);
130
131         }
132         grammar.addGlobalNotationDecl(notation);
133         fAttrChecker.returnAttrArray(attrValues, schemaDoc);
134
135         return notation;
136     }
137 }
138
Popular Tags