Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   XML (http://www.velocityreviews.com/forums/f32-xml.html)
-   -   how do you create an xml element attribute with a namespace (http://www.velocityreviews.com/forums/t545908-how-do-you-create-an-xml-element-attribute-with-a-namespace.html)

sqad 10-21-2007 08:13 PM

how do you create an xml element attribute with a namespace
 
<JiraJelly
xmlns:jira="jelly:com.atlassian.jira.jelly.enterpr ise.JiraTagLib">
....something
</JiraJelly>

Anyone know how to create this xml tag using the xsl:element? Having a
problem with the "xmlns:jira" namespace part...parser hates that.

Thanks,
sqad


Joe Kesselman 10-21-2007 08:26 PM

Re: how do you create an xml element attribute with a namespace
 
sqad wrote:
> <JiraJelly
> xmlns:jira="jelly:com.atlassian.jira.jelly.enterpr ise.JiraTagLib">
> ...something
> </JiraJelly>
>
> Anyone know how to create this xml tag using the xsl:element?


1) Why are you using xsl:element rather than a literal result element or
xsl:copy, which are always simpler unless you need to calculate the
element name?

2) If you really must do so... Explicitly issuing namespace declaration
nodes in specific places usingXSLT 1.0 is unfortunately rather awkward.
You can't use xsl:attribute, since namespace declarations are not
considered attributes by the XPath Data Model which XSLT is based on.
About the only way I know of to do this is to copy the desired namespace
node off a node that happens to carry that definition. (XSLT 2.0 fixes
this by providing an explicit directive for the purpose, but there still
aren't many processors available which support 2.0.)

See some of the related discussion in
http://www.dpawson.co.uk/xsl/sect2/N...tml#d7594e1318

--
() ASCII Ribbon Campaign | Joe Kesselman
/\ Stamp out HTML e-mail! | System architexture and kinetic poetry

sqad 10-21-2007 08:52 PM

Re: how do you create an xml element attribute with a namespace
 
On Oct 21, 1:26 pm, Joe Kesselman <keshlam-nos...@comcast.net> wrote:
> sqad wrote:
> > <JiraJelly
> > xmlns:jira="jelly:com.atlassian.jira.jelly.enterpr ise.JiraTagLib">
> > ...something
> > </JiraJelly>

>
> > Anyone know how to create this xml tag using the xsl:element?

>
> 1) Why are you using xsl:element rather than a literal result element or
> xsl:copy, which are always simpler unless you need to calculate the
> element name?
>
> 2) If you really must do so... Explicitly issuing namespace declaration
> nodes in specific places usingXSLT 1.0 is unfortunately rather awkward.
> You can't use xsl:attribute, since namespace declarations are not
> considered attributes by the XPath Data Model which XSLT is based on.
> About the only way I know of to do this is to copy the desired namespace
> node off a node that happens to carry that definition. (XSLT 2.0 fixes
> this by providing an explicit directive for the purpose, but there still
> aren't many processors available which support 2.0.)
>
> See some of the related discussion inhttp://www.dpawson.co.uk/xsl/sect2/N5536.html#d7594e1318
>
> --
> () ASCII Ribbon Campaign | Joe Kesselman
> /\ Stamp out HTML e-mail! | System architexture and kinetic poetry


Hi Joe,

Thank you for your response.

I tried all sort of hacks and realized QName can't contain namspace
declarations. Unfortunately, the root node <JiraJelly> is not part of
the xmlns:jira namespace. I just want to generate this tag in that
exact syntax in the xml document following an xslt transformation.
This is an xml document that's created after run via a XSLT 2.0
parser. This is all done via Java, so if I can't run it via the
transformer, I'll probably have to do this programatically - file
open, string replace, file close...uber ugly solution

/sqad


Joe Kesselman 10-21-2007 10:15 PM

Re: how do you create an xml element attribute with a namespace
 
sqad wrote:
> I tried all sort of hacks and realized QName can't contain namspace
> declarations.


You're still skipping direct to a proposed solution without giving us a
chance to discuss what problem you're trying to solve or the context in
which you're trying to solve it. That makes giving you useful advice
EXTREMELY difficult.

> Unfortunately, the root node <JiraJelly> is not part of
> the xmlns:jira namespace.


I don't follow why this is unfortunate...?

> I just want to generate this tag in that
> exact syntax in the xml document following an xslt transformation.


If you're using XSLT 2.0, there is a directive which produces a
namespace node on request. (Probably called xsl:namespace, but I may be
misremembering that; check the spec or a good tutorial.)

But again: Why can't you just use a literal result element, with a
literal namespace declaration therein? Unless there's something you
aren't telling us, it sounds like you're making the problem more
difficult than it needs to be.

--
() ASCII Ribbon Campaign | Joe Kesselman
/\ Stamp out HTML e-mail! | System architexture and kinetic poetry

David Carlisle 10-21-2007 11:34 PM

Re: how do you create an xml element attribute with a namespace
 
sqad wrote:


> > > <JiraJelly
> > > xmlns:jira="jelly:com.atlassian.jira.jelly.enterpr ise.JiraTagLib">
> > > ...something
> > > </JiraJelly>



As has been said, why use xsl:element rather than something like
<xsl:template match="whatever">
<JiraJelly
xmlns:jira="jelly:com.atlassian.jira.jelly.enterpr ise.JiraTagLib">
<xsl:apply-templates/>....
</JiraJelly>
</xsl:template>

or more commonly, put the namespace declaration on the xsl:stylesheet
element. the main reason for using xsl:element rather than this literal
result syntax (apart from the ability to generate the element name
dynamically) is that xsl:element _avoids_ copying namepsace nodes, which
is exactly what you don't want to happen here.

David

--
http://dpcarlisle.blogspot.com


All times are GMT. The time now is 05:02 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.