Subjects
Home
Xalan extension functions
Fomatting question serializing DOM with pretty print
xalan with pull parser
Cannot find the declaration
Apache Xalan drop support to run on JRE 1 1 x
Why does Doctype change processing of a document
Node set to XML string via Java extensions in Xalan J: possible?
Templates/Transformers + thread safety???
Problem evaluating xpath with muliple prefix with different namespace
remove an arbitrary attribute from xsl output
Xalan3 XSLT 2 0 XPath 2 0 support?
Problem using compiled translets with Xalan !!
Xalan and jstl 1 1 problem with transform tag
NullPointer in DOM2DTM getLocalName
URIResolvers base parameter with xsltc and cascaded imports
Performance problem for Xalan J on intel dual core
Standard libraries in JAXP?
Serializing a DOM tree to XML file, customize entities replacement
Library Conflict Involving BCEL Library
A question on how users are using <xsl:message >
Kevin Cormier as a new Apache Xalan J committer
Struggling to iterate over tokenized string
Xalan count() trouble
Problem with recursive xpath
Error when switching to java 1 5
document( ' ')
Problem with Xalan2 7 0 transformation
cr/lf options
entity encoded XML
can xalan transform 2 xml using one xslt?
Xalan J JIRA defect review Monday October 16, 2006 from 2:00 to 3:30 pm ED
xsl transform with cdata section elements
xslt parameters not expanded
Weird behavior of XPath evaluate()
How to avoid <xsl:message > instruction prints stylesheet file informations ?
Cannot find SimpleTransform subdirectory after installing Xalan J
recover from document not found exceptions
jdk1 5 and Xalan jar differences?
Performance Issue
Error/Bug adding floating point numbers
XPathAPI: eval exp using nodes with default namespace
modifying xalan to output invalid XML
NullPointerException
mege two separate xml nodes into one
Is this a XALAN document identification bug?
is StylesheetRoot really java io Serializable ?
transform() fails for DOMSource but succeeds for StreamSource
Thoughts on Transformer parameter passing
HELP, Xalan and jstl 1 1 problem with transformer
Problem with XPath namespace axis?
string utils:replace deleting search string if replacement string is an HTML
help with enumeration values pls
xalan 2 5 1 vs 2 7 performance question
How to insert/update in XML document
HTML Serialization and Handling of Ampersands in HREF Attributes
XHTML link tag stripping
SystemId Unknown; Line #24; Column #49; java lang NullPointerException
xpath text() help
Apostrophe problem with xalan 2 7 0
How to set variables in XML document?
Links
Home
Oracle database error code ...
 
Search:  
Power your search with and, or, +, -, or "some phrase" operators.
How to insert/update in XML document

How to insert/update in XML document

2007-02-26       - By Mike Brown
Reply:     1     2     3  

zmustansar wrote:
> I am in a process of editing a xml document. i.e update certain nodes or
> addition of some in document.
>
> I s there any easy way of doing that.

Well, you're asking on the Xalan-J list, so I assume you're wanting an answer
relevant to Xalan-J.

Xalan is an XSLT processor, which means it follows rules defined in a
stylesheet in order to create a new document based on an existing one. It
doesn't modify the original document.

You can use standard JAXP interfaces (javax.xml.*) to invoke Xalan-J with a
DOMSource wrapping your original Document object and (assuming you want a
DOM), a DOMResult to provide the product of the XSLT transformation as another
Document object. I trust you can read the documentation on how to do that.

A typical XSLT design pattern for making small changes to a document is to use
a stylesheet containing a template that directs the processor to perform the
"identity transformation": a recursive copy-through of the nodes in the source
document. You supplement this template with other templates to override the
handling of certain nodes. In this way, you can 'modify' the document.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output method="xml" indent="no"/>

 <!--default for any node: recursively copy it-->
 <xsl:template match="@*|node()">
   <xsl:copy>
     <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>
 </xsl:template>

 <!--override for 'foo' elements: rename them 'bar'-->
 <xsl:template match="foo">
   <bar>
     <xsl:apply-templates select="@*|node()"/>
   </bar>
 </xsl:template>

 <!--override for 'baz' elements: eliminate them and their contents completely
-->
 <xsl:template match="baz"/>

</xsl:stylesheet>

For general questions about XSLT, use xsl-list, about which there is info
at http://www.mulberrytech.com/xsl/xsl-list/

There are other approaches to updating an XML document besides using XSLT. You
could use DOM interfaces directly, you could use an XUpdate processor (though
in either case, if you're going to go to that much trouble, you'll find XSLT
easier and more robust), or you could reparse and manipulate the document
using some other library that provides a DOM-like but easier/more efficient
programmatic API. I believe there are quite a few of these available for
various programming languages.

Mike