Re: [xsl] attribute value replacement and good book recommendation.

Subject: Re: [xsl] attribute value replacement and good book recommendation.
From: chun ji <cji_work@xxxxxxxxx>
Date: Mon, 10 Sep 2007 14:23:45 -0700 (PDT)
Hi Abel, 
thank you for the help, but I still can not make the
conversion working correctly, Here is my latest xsl
file I used: 
"
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
    <xsl:param name="user"/>
    <xsl:param name="pwd"/>

    <xsl:template match="node() | @*">
        <xsl:copy>
             <xsl:apply-templates select="node() | @*"
/>
        </xsl:copy>
    </xsl:template>

    <xsl:template
match="beans/bean/property/@username">
        <xsl:attribute name="username">
             <xsl:value-of select="$user" />
        </xsl:attribute>
    </xsl:template>

    <xsl:template
match="beans/bean/property/@password">
         <xsl:attribute name="password">
              <xsl:value-of select="$pwd" />
         </xsl:attribute>
    </xsl:template>
</xsl:stylesheet>
"
But the output file is the same as my input xml file,
any comments ? 


Charlie, 



--- Abel Braaksma <abel.online@xxxxxxxxx> wrote:

> Hi Charlie,
> 
> I see you've been away from this list since end
> 2006, welcome back ;)
> 
> Changing attributes is as easy as 1-2-3 in XSLT, if
> you know how, that 
> is. You asked for a book as well. This template is
> explained in just 
> about any book on XSLT: in the "XSLT Cookbook" 1st
> edition and 2nd 
> edition (chapter 8); in Jeni Tennison's introductory
> book on XSLT; in 
> XSLT 2.0 Programmer's Reference (Michael Kay), under
> "xsl:copy"; in 
> "XSLT and XPath: A guide to XML Transformations" in
> chapter 9.2 (but not 
> well enough explained imho) etc etc. All these books
> are, as far as I 
> know, still available. I personally favor the
> Cookbook 2nd ed for 
> starters if you are good in working with examples,
> or Jeni Tennison's 
> "Beginning XSLT" (for xslt 1.0) or "Beginning XSLT
> 2.0" (for xslt 2.0) 
> if you like to get a good explanation and step by
> step of the language.
> 
> This is what they all explain:
> 
> <xsl:template match="node() | @*">
> <xsl:copy>
> <xsl:apply-templates select="node() | @*" />
> </xsl:copy>
> </xsl:template>
> 
> or some variant on that theme. It will copy the
> input XML to the output 
> without change. Next, all you have to do is add
> templates for the thing 
> you do want to change. For instance, in your case,
> @username and 
> @password when they are children of 'property'. Just
> add the following 
> to your stylesheet alongside the copy idiom:
> 
> <xsl:template match="property/@username">
> <xsl:attribute name="username">
> <xsl:value-of select="$user" />
> </xsl:attribute>
> </xsl:template>
> 
> <xsl:template match="property/@password">
> <xsl:attribute name="password">
> <xsl:value-of select="$pwd" />
> </xsl:attribute>
> </xsl:template>
> 
> 
> Of course, don't forget to include the parameters in
> your stylesheet 
> with the names you used in your ANT build script.
> I.e., use the 
> following top level declarations:
> 
> <xsl:param name="pwd" />
> <xsl:param name="user" />
> 
> 
> That's all there is to it. Really. Happy coding!
> 
> Cheers,
> -- Abel Braaksma
> 
> 
> PS: a start about XSLT: 
>
http://developer.mozilla.org/en/docs/Transforming_XML_with_XSLT
> (see 
> section on Further reading, it is a bit out of date,
> but gives you a 
> good starting point).
> 
> 
> chun ji wrote:
> > Hi there, 
> > I have couple of questions here. 
> >
> > Q1.
> > I want to replace some attribute values in a xml
> file,
> > but I am kind  new to the XSLT and is blocked for
> what
> > I should do next. 
> >
> > So here is my original xml file, old.xml?  
> >
> > ?
> > <?xml version="1.0" encoding="UTF-8"?>
> > <beans
> > xmlns=http://www.springframework.org/schema/beans
> ?>
> >
> >     <bean id="wandDataSource" class="?#34;
> > destroy-method="close" scope="singleton">
> >         <property name="driverClassName"
> > value="oracle.jdbc.driver.OracleDriver"/>
> >         <property name="url"
> >
> value="jdbc:oracle:thin:@www.boogle.com:1521:abcd"/>
> >         <property name="username"
> > value="someusername"/>
> >         <property name="password"
> > value="somepassword"/>
> >     </bean>
> >     
> > </beans>
> > ?
> >
> > I want to replace the username & password with the
> > value I give, for example, newuser?&
> newpassword?
> > But that old.xml?file is randomly generated, and
> I
> > dont know the value of username?and password?>
in
> > it, when these are being replaced. So in that
> case,
> > what this xsl template file should be looks like? 
> >
> > Here is the target in my ANT script, that I used
> to
> > try to make that replacement. 
> > ??> >    <target name="updateXML">
> >       <xslt in="old.xml" out="new.xml"
> > style="update.xsl">
> >          <param name=user" expression=newuser"/>
> >          <param name="pwd" expression="newpassword
> "/>
> >      </xslt>
> >    </target>
> >   ?> > ?> >
> > Q2. 
> > I started to learn this kind of XML/XSLT tool
> almost 9
> > months ago, , but I still feel that there are lots
> of
> > things that I dont know.  Does someone know if
> there
> > are some good XML books in the market? Or some
> website
> > that can give a beginner very decent XML
> education?  I
> > think that would help me a lot. 
> >
> >
> > Thanks in advance.
> >
> >
> > Charlie. 
> >
> >
> >
> >        
> >
>
____________________________________________________________________________________
> > Pinpoint customers who are looking for what you
> sell. 
> > http://searchmarketing.yahoo.com/
> 
> 



      ____________________________________________________________________________________
Don't let your dream ride pass you by. Make it a reality with Yahoo! Autos.
http://autos.yahoo.com/index.html

Current Thread