Search in sources :

Example 1 with XSAttributeDeclaration

use of org.apache.xerces.xs.XSAttributeDeclaration in project iaf by ibissource.

the class ToXml method handleElement.

// @Override
public void handleElement(XSElementDeclaration elementDeclaration, N node) throws SAXException {
    String name = elementDeclaration.getName();
    String elementNamespace = elementDeclaration.getNamespace();
    String qname = getQName(elementNamespace, name);
    if (DEBUG)
        log.debug("handleNode() name [" + name + "] elementNamespace [" + elementNamespace + "]");
    newLine();
    AttributesImpl attributes = new AttributesImpl();
    Map<String, String> nodeAttributes = getAttributes(elementDeclaration, node);
    if (DEBUG)
        log.debug("node [" + name + "] search for attributeDeclaration");
    XSTypeDefinition typeDefinition = elementDeclaration.getTypeDefinition();
    XSObjectList attributeUses = getAttributeUses(typeDefinition);
    if (attributeUses == null || attributeUses.getLength() == 0) {
        if (nodeAttributes != null && nodeAttributes.size() > 0) {
            log.warn("node [" + name + "] found [" + nodeAttributes.size() + "] attributes, but no declared AttributeUses");
        } else {
            if (DEBUG)
                log.debug("node [" + name + "] no attributeUses, no attributes");
        }
    } else {
        if (nodeAttributes == null || nodeAttributes.isEmpty()) {
            log.warn("node [" + name + "] declared [" + attributeUses.getLength() + "] attributes, but no attributes found");
        } else {
            for (int i = 0; i < attributeUses.getLength(); i++) {
                XSAttributeUse attributeUse = (XSAttributeUse) attributeUses.item(i);
                // if (DEBUG) log.debug("startElement ["+localName+"] attributeUse ["+ToStringBuilder.reflectionToString(attributeUse)+"]");
                XSAttributeDeclaration attributeDeclaration = attributeUse.getAttrDeclaration();
                if (DEBUG)
                    log.debug("node [" + name + "] attributeDeclaration [" + ToStringBuilder.reflectionToString(attributeDeclaration) + "]");
                XSSimpleTypeDefinition attTypeDefinition = attributeDeclaration.getTypeDefinition();
                if (DEBUG)
                    log.debug("node [" + name + "] attTypeDefinition [" + ToStringBuilder.reflectionToString(attTypeDefinition) + "]");
                String attName = attributeDeclaration.getName();
                if (nodeAttributes.containsKey(attName)) {
                    String value = nodeAttributes.remove(attName);
                    String uri = attributeDeclaration.getNamespace();
                    String attqname = getQName(uri, attName);
                    String type = null;
                    if (DEBUG)
                        log.debug("node [" + name + "] adding attribute [" + attName + "] value [" + value + "]");
                    attributes.addAttribute(uri, attName, attqname, type, value);
                }
            }
        }
    }
    if (isNil(elementDeclaration, node)) {
        validatorHandler.startPrefixMapping(XSI_PREFIX_MAPPING, XML_SCHEMA_INSTANCE_NAMESPACE);
        attributes.addAttribute(XML_SCHEMA_INSTANCE_NAMESPACE, XML_SCHEMA_NIL_ATTRIBUTE, XSI_PREFIX_MAPPING + ":" + XML_SCHEMA_NIL_ATTRIBUTE, "xs:boolean", "true");
        validatorHandler.startElement(elementNamespace, name, qname, attributes);
        validatorHandler.endElement(elementNamespace, name, qname);
        validatorHandler.endPrefixMapping(XSI_PREFIX_MAPPING);
    } else {
        validatorHandler.startElement(elementNamespace, name, qname, attributes);
        handleElementContents(elementDeclaration, node);
        validatorHandler.endElement(elementNamespace, name, qname);
    }
// if (createdPrefix!=null) {
// validatorHandler.endPrefixMapping(createdPrefix);
// }
}
Also used : XSTypeDefinition(org.apache.xerces.xs.XSTypeDefinition) AttributesImpl(org.xml.sax.helpers.AttributesImpl) XSObjectList(org.apache.xerces.xs.XSObjectList) XSAttributeDeclaration(org.apache.xerces.xs.XSAttributeDeclaration) XSAttributeUse(org.apache.xerces.xs.XSAttributeUse) XSSimpleTypeDefinition(org.apache.xerces.xs.XSSimpleTypeDefinition)

Example 2 with XSAttributeDeclaration

use of org.apache.xerces.xs.XSAttributeDeclaration in project iaf by ibissource.

the class XmlTo method startElement.

@Override
public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
    boolean xmlArrayContainer = aligner.isParentOfSingleMultipleOccurringChildElement();
    boolean repeatedElement = aligner.isMultipleOccurringChildInParentElement(localName);
    XSTypeDefinition typeDefinition = aligner.getTypeDefinition();
    if (!localName.equals(topElement)) {
        if (topElement != null) {
            if (DEBUG)
                log.debug("endElementGroup [" + topElement + "]");
            documentContainer.endElementGroup(topElement);
        }
        if (DEBUG)
            log.debug("startElementGroup [" + localName + "]");
        documentContainer.startElementGroup(localName, xmlArrayContainer, repeatedElement, typeDefinition);
        topElement = localName;
    }
    element.push(topElement);
    topElement = null;
    if (DEBUG)
        log.debug("startElement [" + localName + "] xml array container [" + aligner.isParentOfSingleMultipleOccurringChildElement() + "] repeated element [" + aligner.isMultipleOccurringChildInParentElement(localName) + "]");
    documentContainer.startElement(localName, xmlArrayContainer, repeatedElement, typeDefinition);
    super.startElement(uri, localName, qName, atts);
    if (aligner.isNil(atts)) {
        documentContainer.setNull();
    } else {
        if (writeAttributes) {
            XSObjectList attributeUses = aligner.getAttributeUses();
            if (attributeUses == null) {
                if (atts.getLength() > 0) {
                    log.warn("found [" + atts.getLength() + "] attributes, but no declared AttributeUses");
                }
            } else {
                for (int i = 0; i < attributeUses.getLength(); i++) {
                    XSAttributeUse attributeUse = (XSAttributeUse) attributeUses.item(i);
                    XSAttributeDeclaration attributeDeclaration = attributeUse.getAttrDeclaration();
                    XSSimpleTypeDefinition attTypeDefinition = attributeDeclaration.getTypeDefinition();
                    String attName = attributeDeclaration.getName();
                    String attNS = attributeDeclaration.getNamespace();
                    if (DEBUG)
                        log.debug("startElement [" + localName + "] searching attribute [" + attNS + ":" + attName + "]");
                    int attIndex = attNS != null ? atts.getIndex(attNS, attName) : atts.getIndex(attName);
                    if (attIndex >= 0) {
                        String value = atts.getValue(attIndex);
                        if (DEBUG)
                            log.debug("startElement [" + localName + "] attribute [" + attNS + ":" + attName + "] value [" + value + "]");
                        if (StringUtils.isNotEmpty(value)) {
                            documentContainer.setAttribute(attName, value, attTypeDefinition);
                        }
                    }
                }
            }
        }
    }
}
Also used : XSTypeDefinition(org.apache.xerces.xs.XSTypeDefinition) XSObjectList(org.apache.xerces.xs.XSObjectList) XSAttributeDeclaration(org.apache.xerces.xs.XSAttributeDeclaration) XSAttributeUse(org.apache.xerces.xs.XSAttributeUse) XSSimpleTypeDefinition(org.apache.xerces.xs.XSSimpleTypeDefinition)

Aggregations

XSAttributeDeclaration (org.apache.xerces.xs.XSAttributeDeclaration)2 XSAttributeUse (org.apache.xerces.xs.XSAttributeUse)2 XSObjectList (org.apache.xerces.xs.XSObjectList)2 XSSimpleTypeDefinition (org.apache.xerces.xs.XSSimpleTypeDefinition)2 XSTypeDefinition (org.apache.xerces.xs.XSTypeDefinition)2 AttributesImpl (org.xml.sax.helpers.AttributesImpl)1