You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by "fabiodap@tin.it" <fa...@tin.it> on 2007/08/31 15:40:20 UTC

Writing namespace information

Hello all,

Is there a way I could specify that my document comes from 
multiple
namespaces. There seems to be only one namespace parameter.

To be clear, i want to write the following thing:

<hl7:PID xsi:
schemaLocation="urn:hl7-org:v2xml segments_test.xsd" xmlns:xsi="http:
//www.w3.org/2001/XMLSchema-instance" xmlns:hl7="urn:hl7-org:v2xml">

This is the piece of code where i create and fill the Document:

    
public Document encodeDocument(Message source) throws HL7Exception {
        String messageClassName = source.getClass().getName();
        
String messageName = messageClassName.substring(messageClassName.
lastIndexOf('.') + 1);
        org.w3c.dom.Document doc = null;
        
try {
        	DocumentBuilderFactory dbf = DocumentBuilderFactory.
newInstance();
        	dbf.setNamespaceAware(true);
        	dbf.
setAttribute(JAXPConstants.JAXP_SCHEMA_SOURCE, "urn:hl7-org:v2xml 
segments_test.xsd");
            doc = dbf.newDocumentBuilder().
newDocument();
            Element root = doc.createElement
(messageName);
            doc.appendChild(root);
        }

How to 
specify here the information regarding the namespaces?

Greetz,
Fabio 
Daprile

---------------------------------------------------------------------
To unsubscribe, e-mail: j-users-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-users-help@xerces.apache.org


Re: Writing namespace information

Posted by Nathan Beyer <nb...@gmail.com>.
Here's on example (compiled against JDK 1.6) of how you would create
that element as the root element via the DOM APIs. Essentially, it
boils down to use the 'createXXXNS' and 'setXXXNS' methods.

-Nathan

import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class DOMWithNS {

	public static void main(String[] args) throws Exception {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		factory.setNamespaceAware(true);
		DocumentBuilder builder = factory.newDocumentBuilder();

		// Create the Document
		Document doc = builder.newDocument();
		// Create the root element with a namespace
		Element pid = doc.createElementNS("urn:hl7-org:v2xml", "hl7:PID");
		// add the root element to the Document
		doc.appendChild(pid);
		// add the xmlns:hl7 attribute to this element
		pid.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns:hl7",
				"urn:hl7-org:v2xml");
		// add the xmlns:xsi attribute to this element
		pid.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns:xsi",
				XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI);
		// add the xsi:schemaLocation attribute
		pid.setAttributeNS(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI,
				"xsi:schemaLocation", "urn:hl7-org:v2xml segments_test.xsd");

		// identity transform to print document to standard out
		TransformerFactory.newInstance().newTransformer().transform(
				new DOMSource(doc), new StreamResult(System.out));
	}

}



On 8/31/07, fabiodap@tin.it <fa...@tin.it> wrote:
> Hello all,
>
> Is there a way I could specify that my document comes from
> multiple
> namespaces. There seems to be only one namespace parameter.
>
> To be clear, i want to write the following thing:
>
> <hl7:PID xsi:
> schemaLocation="urn:hl7-org:v2xml segments_test.xsd" xmlns:xsi="http:
> //www.w3.org/2001/XMLSchema-instance" xmlns:hl7="urn:hl7-org:v2xml">
>
> This is the piece of code where i create and fill the Document:
>
>
> public Document encodeDocument(Message source) throws HL7Exception {
>         String messageClassName = source.getClass().getName();
>
> String messageName = messageClassName.substring(messageClassName.
> lastIndexOf('.') + 1);
>         org.w3c.dom.Document doc = null;
>
> try {
>                 DocumentBuilderFactory dbf = DocumentBuilderFactory.
> newInstance();
>                 dbf.setNamespaceAware(true);
>                 dbf.
> setAttribute(JAXPConstants.JAXP_SCHEMA_SOURCE, "urn:hl7-org:v2xml
> segments_test.xsd");
>             doc = dbf.newDocumentBuilder().
> newDocument();
>             Element root = doc.createElement
> (messageName);
>             doc.appendChild(root);
>         }
>
> How to
> specify here the information regarding the namespaces?
>
> Greetz,
> Fabio
> Daprile
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: j-users-unsubscribe@xerces.apache.org
> For additional commands, e-mail: j-users-help@xerces.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: j-users-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-users-help@xerces.apache.org