mondrian.tui
Class XmlUtil

java.lang.Object
  extended by mondrian.tui.XmlUtil

public class XmlUtil
extends Object

Some XML parsing, validation and transform utility methods used to valiate XMLA responses.

Author:
Richard M. Emberson
 

Nested Class Summary
static class XmlUtil.Resolver
          This can be extened to have a map from publicId/systemId to InputSource.
static class XmlUtil.SAXErrorHandler
          Error handler plus helper methods.
 
Field Summary
static String DEFER_NODE_EXPANSION
           
static String FULL_SCHEMA_VALIDATION_FEATURE_ID
           
static String LINE_SEP
           
static String NAMESPACES_FEATURE_ID
           
static String SCHEMA_LOCATION
           
static String SCHEMA_VALIDATION_FEATURE_ID
           
static String SOAP_PREFIX
           
static String VALIDATION_FEATURE_ID
           
static String XMLNS
           
static String XSD_PREFIX
           
 
Method Summary
static Node[] convertToNodes(org.w3c.dom.xpath.XPathResult xpathResult)
          Convert an XPathResult to an array of Nodes.
static String convertToString(org.w3c.dom.xpath.XPathResult xpathResult, boolean prettyPrint)
          Convert an XPathResult object to String.
static Document createContextDocument(String[][] nsArray)
          Create a context document for use in performing XPath operations.
static String getNamespaceAttributeValue(Document doc)
          This is used to get a Document's namespace attribute value.
static org.apache.xerces.parsers.DOMParser getParser(String schemaLocationPropertyValue, EntityResolver entityResolver, boolean validate)
          Get your non-cached DOM parser which can be configured to do schema based validation of the instance Document.
static String getSoapXmlaXds2xd(String xmlaPrefix)
          This is the xslt that can extract the "data" part of a SOAP XMLA response.
static String getSoapXmlaXds2xs(String xmlaPrefix)
          This is the xslt that can extract the "schema" part of a SOAP XMLA response.
static TransformerFactory getTransformerFactory()
           
static String getXercesVersion()
          Get the Xerces version being used.
static int[] getXercesVersionNumbers()
          Gets the Xerces version numbers as a three part array of ints where the first element is the major release number, the second is the minor release number, and the third is the patch number.
static String getXercesVersionNumberString()
          Get the number part of the Xerces Version string.
static String getXmlaXds2xd(String ns)
          This is the xslt that can extract the "data" part of a XMLA response.
static String getXmlaXds2xs(String ns)
          This is the xslt that can extract the "schema" part of a XMLA response.
static String makeRootPathInSoapBody()
           
static String makeRootPathInSoapBody(String xmlaPrefix, String xsdPrefix)
           
static String makeSoapPath()
           
static String makeSoapPath(String prefix)
           
static Document newDocument(Node firstElement, boolean deepcopy)
           
static Document parse(byte[] bytes)
          Parse a byte array into a Document (no validation).
static Document parse(File file)
           
static Document parse(InputStream in)
          Parse a stream into a Document (no validation).
static Document parseString(String s)
          Parse a String into a Document (no validation).
static org.w3c.dom.xpath.XPathResult select(Node contextNode, String xpath, Node namespaceNode)
           
static Node[] selectAsNodes(Node node, String xpath)
           
static Node[] selectAsNodes(Node node, String xpath, Node namespaceNode)
           
static String selectAsString(Node node, String xpath)
           
static String selectAsString(Node node, String xpath, Node namespaceNode)
           
static boolean supportsValidation()
          Returns whether the XML parser supports validation.
static String toString(Node node, boolean prettyPrint)
          Convert a Node to a String.
static Node transform(Document inDoc, Reader xslReader)
           
static Node transform(Document inDoc, Reader xslReader, String[][] namevalueParameters)
          Transform a Document and return the transformed Node.
static Node transform(Document inDoc, String xslFileName)
           
static Node transform(Document inDoc, String xslFileName, String[][] namevalueParameters)
          Transform a Document and return the transformed Node.
static void validate(Document doc, String schemaLocationPropertyValue, EntityResolver resolver)
           
static void validate(String docStr, String schemaLocationPropertyValue, EntityResolver resolver)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LINE_SEP

public static final String LINE_SEP

SOAP_PREFIX

public static final String SOAP_PREFIX
See Also:
Constant Field Values

XSD_PREFIX

public static final String XSD_PREFIX
See Also:
Constant Field Values

XMLNS

public static final String XMLNS
See Also:
Constant Field Values

NAMESPACES_FEATURE_ID

public static final String NAMESPACES_FEATURE_ID
See Also:
Constant Field Values

VALIDATION_FEATURE_ID

public static final String VALIDATION_FEATURE_ID
See Also:
Constant Field Values

SCHEMA_VALIDATION_FEATURE_ID

public static final String SCHEMA_VALIDATION_FEATURE_ID
See Also:
Constant Field Values

FULL_SCHEMA_VALIDATION_FEATURE_ID

public static final String FULL_SCHEMA_VALIDATION_FEATURE_ID
See Also:
Constant Field Values

DEFER_NODE_EXPANSION

public static final String DEFER_NODE_EXPANSION
See Also:
Constant Field Values

SCHEMA_LOCATION

public static final String SCHEMA_LOCATION
See Also:
Constant Field Values
Method Detail

getSoapXmlaXds2xd

public static final String getSoapXmlaXds2xd(String xmlaPrefix)
This is the xslt that can extract the "data" part of a SOAP XMLA response.


getSoapXmlaXds2xs

public static final String getSoapXmlaXds2xs(String xmlaPrefix)
This is the xslt that can extract the "schema" part of a SOAP XMLA response.


getXmlaXds2xd

public static final String getXmlaXds2xd(String ns)
This is the xslt that can extract the "data" part of a XMLA response.


getXmlaXds2xs

public static final String getXmlaXds2xs(String ns)
This is the xslt that can extract the "schema" part of a XMLA response.


newDocument

public static Document newDocument(Node firstElement,
                                   boolean deepcopy)

getParser

public static org.apache.xerces.parsers.DOMParser getParser(String schemaLocationPropertyValue,
                                                            EntityResolver entityResolver,
                                                            boolean validate)
                                                     throws SAXNotRecognizedException,
                                                            SAXNotSupportedException
Get your non-cached DOM parser which can be configured to do schema based validation of the instance Document.

Throws:
SAXNotRecognizedException
SAXNotSupportedException

parseString

public static Document parseString(String s)
                            throws SAXException,
                                   IOException
Parse a String into a Document (no validation).

Throws:
SAXException
IOException

parse

public static Document parse(byte[] bytes)
                      throws SAXException,
                             IOException
Parse a byte array into a Document (no validation).

Throws:
SAXException
IOException

parse

public static Document parse(File file)
                      throws SAXException,
                             IOException
Throws:
SAXException
IOException

parse

public static Document parse(InputStream in)
                      throws SAXException,
                             IOException
Parse a stream into a Document (no validation).

Throws:
SAXException
IOException

createContextDocument

public static Document createContextDocument(String[][] nsArray)
                                      throws SAXException,
                                             IOException
Create a context document for use in performing XPath operations. An array of prefix/namespace-urls are provided as input. These namespace-urls should be all of those that will appear in the document against which an xpath is to be applied. Importantly, it is, in fact, each element of the Document that has a default namespace these namespaces MUST have prefix/namespace-urls pairs in the context document and the prefix provided MUST also be used in the xpath. Elements with explicit namespaces don't have to have pairs in the context Document as long as the xpath uses the same prefixes that appear in the target Document.

Throws:
SAXException
IOException

makeSoapPath

public static String makeSoapPath()

makeSoapPath

public static String makeSoapPath(String prefix)

makeRootPathInSoapBody

public static String makeRootPathInSoapBody()

makeRootPathInSoapBody

public static String makeRootPathInSoapBody(String xmlaPrefix,
                                            String xsdPrefix)

selectAsString

public static String selectAsString(Node node,
                                    String xpath)
                             throws org.w3c.dom.xpath.XPathException
Throws:
org.w3c.dom.xpath.XPathException

selectAsString

public static String selectAsString(Node node,
                                    String xpath,
                                    Node namespaceNode)
                             throws org.w3c.dom.xpath.XPathException
Throws:
org.w3c.dom.xpath.XPathException

selectAsNodes

public static Node[] selectAsNodes(Node node,
                                   String xpath)
                            throws org.w3c.dom.xpath.XPathException
Throws:
org.w3c.dom.xpath.XPathException

selectAsNodes

public static Node[] selectAsNodes(Node node,
                                   String xpath,
                                   Node namespaceNode)
                            throws org.w3c.dom.xpath.XPathException
Throws:
org.w3c.dom.xpath.XPathException

select

public static org.w3c.dom.xpath.XPathResult select(Node contextNode,
                                                   String xpath,
                                                   Node namespaceNode)
                                            throws org.w3c.dom.xpath.XPathException
Throws:
org.w3c.dom.xpath.XPathException

convertToString

public static String convertToString(org.w3c.dom.xpath.XPathResult xpathResult,
                                     boolean prettyPrint)
Convert an XPathResult object to String.


convertToNodes

public static Node[] convertToNodes(org.w3c.dom.xpath.XPathResult xpathResult)
Convert an XPathResult to an array of Nodes.


toString

public static String toString(Node node,
                              boolean prettyPrint)
Convert a Node to a String.


getXercesVersion

public static String getXercesVersion()
Get the Xerces version being used.

Returns:
Xerces version being used

getXercesVersionNumberString

public static String getXercesVersionNumberString()
Get the number part of the Xerces Version string.

Returns:
number part of the Xerces Version string

getXercesVersionNumbers

public static int[] getXercesVersionNumbers()
Gets the Xerces version numbers as a three part array of ints where the first element is the major release number, the second is the minor release number, and the third is the patch number.

Returns:
Xerces version number as int array

supportsValidation

public static boolean supportsValidation()
Returns whether the XML parser supports validation.

I could not get validation to work with Xerces 2.2 so I put in this check. If you want to test on an earlier version of Xerces simply define the above property: "mondrian.xml.always.attempt.validation", to true.

Returns:
whether the XML parser supports validation

validate

public static void validate(Document doc,
                            String schemaLocationPropertyValue,
                            EntityResolver resolver)
                     throws IOException,
                            SAXException
Throws:
IOException
SAXException

validate

public static void validate(String docStr,
                            String schemaLocationPropertyValue,
                            EntityResolver resolver)
                     throws IOException,
                            SAXException
Throws:
IOException
SAXException

getNamespaceAttributeValue

public static String getNamespaceAttributeValue(Document doc)
This is used to get a Document's namespace attribute value.


getTransformerFactory

public static TransformerFactory getTransformerFactory()
                                                throws TransformerFactoryConfigurationError
Throws:
TransformerFactoryConfigurationError

transform

public static Node transform(Document inDoc,
                             String xslFileName,
                             String[][] namevalueParameters)
                      throws ParserConfigurationException,
                             SAXException,
                             IOException,
                             TransformerConfigurationException,
                             TransformerException
Transform a Document and return the transformed Node.

Throws:
ParserConfigurationException
SAXException
IOException
TransformerConfigurationException
TransformerException

transform

public static Node transform(Document inDoc,
                             String xslFileName)
                      throws ParserConfigurationException,
                             SAXException,
                             IOException,
                             TransformerConfigurationException,
                             TransformerException
Throws:
ParserConfigurationException
SAXException
IOException
TransformerConfigurationException
TransformerException

transform

public static Node transform(Document inDoc,
                             Reader xslReader,
                             String[][] namevalueParameters)
                      throws ParserConfigurationException,
                             SAXException,
                             IOException,
                             TransformerConfigurationException,
                             TransformerException
Transform a Document and return the transformed Node.

Throws:
ParserConfigurationException
SAXException
IOException
TransformerConfigurationException
TransformerException

transform

public static Node transform(Document inDoc,
                             Reader xslReader)
                      throws ParserConfigurationException,
                             SAXException,
                             IOException,
                             TransformerConfigurationException,
                             TransformerException
Throws:
ParserConfigurationException
SAXException
IOException
TransformerConfigurationException
TransformerException

SourceForge.net_Logo