[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Changing namespaces

Subject: Re: Changing namespaces
From: Pradnya Gawade <pradnya.gawade7@xxxxxxxxx>
Date: Tue, 16 Aug 2011 13:23:48 -0400
Re:  Changing namespaces
Hi,

I am having the same issue of xmlns, xmlns:OC="..." getting displayed
in the individual elements after combining the 2 stylesheets like
following:

<OC:MultiSelectList xmlns:OC="old-oc-namespace-uri" ID="MSL_176"
Name="multiselect" DataType="text" ActualDataType="text">

<SubjectData xmlns="old-default-namespace"
xmlns:OC="old-oc-namespace-uri" SubjectKey="SS_PGCOMPLE"
OC:StudySubjectID="pgcomplete">

any suggestions please?

I think there is no need to have 2 copy templates after I combine but
cannot imagine how the templates in my first stylesheet and second
stylesheet can work together. I am putting the priority for templates
from your stylesheet as lower number expecting it to get executed at
the end. Combined stylesheet looks like:

<xsl:stylesheet
   version="2.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:olddef="old-default-namespace"
   xmlns="new-default-namespace"
   xmlns:oldOC="old-oc-namespace-uri"

   xmlns:OC="new-oc-namespace-uri"
    xmlns:OCRules="oc-rules-uri"
   exclude-result-prefixes="olddef oldOC"
>
<!-- standard copy template -->
<xsl:template name="copyTemplate" match="node()|@*" >
	<xsl:copy>
		<xsl:apply-templates select="@*|node()" />
	</xsl:copy>
</xsl:template>

<xsl:template name="removeOCExtnElmnt" priority="6" match="//*[
namespace-uri()='old-oc-namespace-uri' ]" ></xsl:template>

<xsl:template name="removeOCExtnAttrib" priority="5" match="//@*[
namespace-uri()='old-oc-namespace-uri' ]" ></xsl:template>

<xsl:template priority="7" match="@ODMVersion" >
	<xsl:attribute name="ODMVersion">1.2</xsl:attribute>
</xsl:template>

<xsl:template priority="8" match="oldOC:MultiSelectList |
oldOC:MultiSelectListRef | oldOC:MultiSelectListItem" >
	<xsl:element name="{name()}" namespace="{namespace-uri()}" >
		<xsl:copy-of select="@*"/>
		<xsl:apply-templates/>
	</xsl:element>

</xsl:template>

<xsl:template priority="9" match="//*[@oldOC:StudySubjectID |
@oldOC:UniqueIdentifier | @oldOC:Status
| @oldOC:DateOfBirth | @oldOC:Sex | @oldOC:StudyEventLocation |
@oldOC:StartDate
| @oldOC:SubjectAgeAtEvent | @oldOC:Version | @oldOC:InterviewerName
| @oldOC:InterviewDate | @oldOC:Status]" >
	<xsl:element name="{name()}" namespace="{namespace-uri()}">
		<xsl:copy-of select="@*" copy-namespaces="no"/>
		<xsl:apply-templates/>
	</xsl:element>
</xsl:template>

<xsl:template name="removeOCRulesElmnts" priority="10" match="//*[
namespace-uri()='oc-rules-uri' ]" ></xsl:template>
<xsl:template name="removeOCRulesAttribs" priority="11" match="//@*[
namespace-uri()='oc-rules-uri' ]" ></xsl:template>

<!-- ++++++++++  code to change the namespaces in root tag ++++++++++ -->

<xsl:template name="first" match="@*|*" priority="12" mode="part2">

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

<xsl:template name="second" match="olddef:*" priority="4">
 <xsl:element name="{local-name()}" namespace="new-default-namespace">
 <xsl:namespace name="OC" select="'new-oc-namespace-uri'"/>

 <xsl:apply-templates select="@*,node()"/>
 </xsl:element>
</xsl:template>

<xsl:template name="third" match="oldOC:*" priority="3">
 <xsl:element name="OC:{local-name()}" namespace="new-oc-namespace-uri">

 <xsl:apply-templates select="@*,node()"/>
 </xsl:element>
</xsl:template>

<xsl:template name="fourth" match="@oldOC:*" priority="2">
 <xsl:attribute name="OC:{local-name()}" namespace="new-oc-namespace-uri">
 <xsl:value-of select="."/>
 </xsl:attribute>
</xsl:template>

</xsl:stylesheet>

Thank you,
Pradnya




On Tue, Aug 16, 2011 at 11:15 AM, Pradnya Gawade
<pradnya.gawade7@xxxxxxxxx> wrote:
> Hi David,
>
> I think I am able to combine the 2 stylesheets with using the
> namespaces exactly like in your stylesheet and tweaking my first
> stylesheet a bit for prefixes I am using and putting name, priority
> attributes appropriately for templates in your stylesheet.
> Thanks again!
>
> - Pradnya
>
>
>
>
>
>
>
> On Tue, Aug 16, 2011 at 10:50 AM, Pradnya Gawade
> <pradnya.gawade7@xxxxxxxxx> wrote:
>> Thanks a lot David.
>>
>> One last thing I am thinking is if there is any way I can combine the
>> 2 stylesheets I am using for the entire task. Meaning, before I apply
>> your stylehsheet I use the one which I have specified in my original
>> post and then output of the same I pass to your stylesheet to get the
>> final output. Ideally I would like to have everything in just one
>> stylesheet. I was thinking to make use "mode" attribute in the
>> templates to achieve this but looks like namespace declarations could
>> be a problem. Because in my 1st stylesheet e.g. default namespace is
>> my old default stylesheet and in yours it needs to be changed to the
>> new default stylesheet and similar namespace differences.
>>
>> - Pradnya
>>
>>
>>
>>
>>
>> On Tue, Aug 16, 2011 at 10:40 AM, David Carlisle <davidc@xxxxxxxxx> wrote:
>>> On 16/08/2011 15:25, Pradnya Gawade wrote:
>>>>
>>>> but it looks for the
>>>> elements corresponding the namespace uri in your stylesheet
>>>> corresponding to prefix 'olddef'; however the prefix in input xml for
>>>> the same namespace uri could be different.
>>>
>>> Exactly, yes.
>>>
>>>  All xpath matching uses the expanded qname (namespace URI + local name)
The
>>> prefixes used in the source and the stylesheet are essentially arbitrary
and
>>> (mostly) not used after the orignal parsing of the documents, where of
>>> course they are needed to associate each element with its namespace.
>>>
>>> David
>>>
>>>
>>> --
>>> google plus: https:/profiles.google.com/d.p.carlisle
>>>
>>> ________________________________________________________________________
>>> The Numerical Algorithms Group Ltd is a company registered in England
>>> and Wales with company number 1249803. The registered office is:
>>> Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
>>>
>>> This e-mail has been scanned for all viruses by Star. The service is
>>> powered by MessageLabs.
>>> ________________________________________________________________________

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.