public Element addAnnotation(QName qname, Element parent) { Element annotation = createElement(qname); parent.appendChild(annotation); return annotation; }
public Element addAnnotation(QName qname, boolean value, Element parent) { Element annotation = createElement(qname); parent.appendChild(annotation); annotation.setTextContent(Boolean.toString(value)); return annotation; }
/** * Add generic annotation element. * @param qname QName of the element * @param value string value of the element * @param parent element under which the definition will be added * @return created XSD element */ public Element addAnnotation(QName qname, String value, Element parent) { Element annotation = createElement(qname); parent.appendChild(annotation); if (value != null) { annotation.setTextContent(value); } return annotation; }
private void addSequenceXsdAnyDefinition(Element elementDef) { Element complexContextElement = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "complexType")); elementDef.appendChild(complexContextElement); Element sequenceElement = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "sequence")); complexContextElement.appendChild(sequenceElement); addXsdAnyDefinition(sequenceElement); }
private Element getOrCreateElement(QName qName, Element parentElement) { NodeList elements = parentElement.getElementsByTagNameNS(qName.getNamespaceURI(), qName.getLocalPart()); if (elements.getLength() == 0) { Element element = createElement(qName); Element refChild = DOMUtil.getFirstChildElement(parentElement); parentElement.insertBefore(element, refChild); return element; } return (Element)elements.item(0); }
public Element addAnnotation(QName qname, QName value, Element parent) { Element annotation = createElement(qname); parent.appendChild(annotation); if (value != null) { DOMUtil.setQNameValue(annotation, value); } return annotation; }
/** * Create single import XSD element. */ private Element createImport(String namespace) { Element element = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "import")); setAttribute(element, "namespace", namespace); return element; }
/** * Adds annotation that points to another element (ususaly a property). * @param qname QName of the element * @param value Qname of the target element (property QName) * @param parent parent element under which the definition will be added * @return created XSD element */ public Element addRefAnnotation(QName qname, QName value, Element parent) { Element element = createElement(qname); parent.appendChild(element); //old way: setQNameAttribute(access, "ref", value); DOMUtil.setQNameValue(element, value); return element; }
public Element addAnnotation(QName qname, PrismReferenceValue value, Element parent) { Element annotation = createElement(qname); parent.appendChild(annotation); if (value != null) { annotation.setAttribute(ATTRIBUTE_OID_LOCAL_NAME, value.getOid()); DOMUtil.setQNameAttribute(annotation, ATTRIBUTE_REF_TYPE_LOCAL_NAME, value.getTargetType()); } return annotation; }
private void addXsdAnyDefinition(Element elementDef) { Element anyElement = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "any")); elementDef.appendChild(anyElement); setAttribute(anyElement, "namespace", "##other"); setAttribute(anyElement, "minOccurs", "0"); setAttribute(anyElement, "maxOccurs", "unbounded"); setAttribute(anyElement, "processContents", "lax"); }
Element complexType = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "complexType")); parent.appendChild(complexType); Element annotation = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "annotation")); complexType.appendChild(annotation); Element complexContent = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "complexContent")); complexType.appendChild(complexContent); Element extension = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "extension")); complexContent.appendChild(extension); setQNameAttribute(extension, "base", definition.getSuperType()); Element sequence = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "sequence")); containingElement.appendChild(sequence); Element appinfo = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "appinfo")); annotation.appendChild(appinfo);
/** * Adds XSD element definition. * @param name element QName * @param typeName element type QName * @param parent element under which the definition will be added */ private Element addElementDefinition(QName name, QName typeName, int minOccurs, int maxOccurs, Element parent) { Element elementDef = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "element")); parent.appendChild(elementDef); if (isMyNamespace(name)) { setAttribute(elementDef, "name", name.getLocalPart()); if (typeName.equals(DOMUtil.XSD_ANY)) { addSequenceXsdAnyDefinition(elementDef); } else { setQNameAttribute(elementDef, "type", typeName); } } else { // Need to create "ref" instead of "name" setAttribute(elementDef, "ref", name); if (typeName != null) { // Type cannot be stored directly, XSD does not allow it with "ref"s. addAnnotationToDefinition(elementDef, A_TYPE, typeName); } } setMultiplicityAttribute(elementDef, "minOccurs", minOccurs); setMultiplicityAttribute(elementDef, "maxOccurs", maxOccurs); return elementDef; }
/** * Create schema XSD DOM document. */ private void init() throws ParserConfigurationException { if (namespacePrefixMapper == null) { // TODO: clone? namespacePrefixMapper = ((SchemaRegistryImpl) prismContext.getSchemaRegistry()).getNamespacePrefixMapper(); } // We don't want the "tns" prefix to be kept in the mapper namespacePrefixMapper = namespacePrefixMapper.clone(); namespacePrefixMapper.registerPrefixLocal(getNamespace(), "tns"); if (LOGGER.isTraceEnabled()) { LOGGER.trace("Using namespace prefix mapper to serialize schema:\n{}",DebugUtil.dump(namespacePrefixMapper)); } DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); dbf.setValidating(false); DocumentBuilder db = dbf.newDocumentBuilder(); document = db.newDocument(); Element root = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "schema")); document.appendChild(root); rootXsdElement = document.getDocumentElement(); setAttribute(rootXsdElement, "targetNamespace", getNamespace()); setAttribute(rootXsdElement, "elementFormDefault", "qualified"); DOMUtil.setNamespaceDeclaration(rootXsdElement, "tns", getNamespace()); if (attributeQualified) { setAttribute(rootXsdElement, "attributeFormDefault", "qualified"); } }
Element property = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "element")); Element annotation = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "annotation")); property.appendChild(annotation); Element appinfo = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "appinfo")); annotation.appendChild(appinfo); property = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "element")); annotation = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "annotation")); property.appendChild(annotation); appinfo = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "appinfo")); annotation.appendChild(appinfo);
Element property = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "element")); Element annotation = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "annotation")); property.appendChild(annotation); Element appinfo = createElement(new QName(W3C_XML_SCHEMA_NS_URI, "appinfo")); annotation.appendChild(appinfo);