Subject: Re: [xsl] Copy all attributes except except some From: "Imsieke, Gerrit, le-tex gerrit.imsieke@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 19 Jun 2014 09:38:40 -0000 |
<doc> <source note="hello" noteAdditions="world" expert="HAHA"/> </doc>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/*"> <xsl:copy> <xsl:apply-templates select="source/@note"/> </xsl:copy> </xsl:template>
<xsl:template match="@note"> <xsl:attribute name="{name()}"> <xsl:value-of select="."/> <xsl:apply-templates select="../@noteAdditions"/> </xsl:attribute> </xsl:template>
<xsl:template match="@noteAdditions"> <xsl:text>
</xsl:text> <xsl:value-of select="../@expert"/> <xsl:text>:</xsl:text> <xsl:value-of select="."/> </xsl:template>
Thanks Gerrit, your useful tips made it work now.
One more thing: In the source xml I hava the attribute "note" and "noteAdditions" that I want to combine together joined by another attributes value: <source note="hello" noteAdditions="world" expert="HAHA"> <result note="hello
HAHA:world">
On Thu, Jun 19, 2014 at 7:27 AM, Imsieke, Gerrit, le-tex gerrit.imsieke@xxxxxxxxx <mailto:gerrit.imsieke@xxxxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx <mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>> wrote:
On 19.06.2014 03:33, Philipp Kursawe phil.kursawe@xxxxxxxxx <mailto:phil.kursawe@xxxxxxxxx> wrote:
The resulting XML should contain only 2 attributes from "InspectionExt" in case result="10" or "11" otherwise all attributes and "Obligations", "Defects" but no "Photo" Also when copying the Defects/Defect items, only those with "not(@reinspection='ok'" should be copied over. No "Defects" element should be created if nothing from source xml is copied. The resulting "Defect" element must not contain the "reinspection" attribute.
That's what I came up with after your suggestions: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/__1999/XSL/Transform <http://www.w3.org/1999/XSL/Transform>" xmlns:xs="http://www.w3.org/__2001/XMLSchema <http://www.w3.org/2001/XMLSchema>" xmlns:fn="http://www.w3.org/__2005/xpath-functions <http://www.w3.org/2005/xpath-functions>"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="InspectionExt"> <xsl:element name="ns2:__InspectionReportInput" namespace="http://__somenamespace <http://somenamespace>"> <xsl:choose> <xsl:when test="@result eq '10' or @result eq '11'">
In XPath 1, there is no eq operator. Use = instead.
<xsl:copy-of select="@result"/> <xsl:copy-of select="@expert"/> </xsl:when> <xsl:otherwise> <xsl:copy-of select="@*[not(@signed)]"/> <xsl:for-each select="Defects"> <xsl:element name="Defects"> <xsl:for-each select="Defect[not(@__reinspection='ok')]"> <xsl:element name="Defect"> <xsl:copy-of select="@*[not(@reinspection)]__"/>
You are selecting all attributes that don't have a reinspection attribute attached to them. Since no attribute carries other attributes, your predicate is always true. Use @*[not(name() = 'reinspection')] instead.
Gerrit
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> EasyUnsubscribe <-list/225679> (by email <>)
-- Gerrit Imsieke GeschC$ftsfC<hrer / Managing Director le-tex publishing services GmbH Weissenfelser Str. 84, 04229 Leipzig, Germany Phone +49 341 355356 110, Fax +49 341 355356 510 gerrit.imsieke@xxxxxxxxx, http://www.le-tex.de
Registergericht / Commercial Register: Amtsgericht Leipzig Registernummer / Registration Number: HRB 24930
GeschC$ftsfC<hrer: Gerrit Imsieke, Svea Jelonek, Thomas Schmidt, Dr. Reinhard VC6ckler
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Copy all attributes excep, Philipp Kursawe phil | Thread | Re: [xsl] Copy all attributes excep, Imsieke, Gerrit, le- |
Re: [xsl] Copy all attributes excep, Philipp Kursawe phil | Date | [xsl] [ANN] Late-breaking News adde, B Tommie Usdin btusd |
Month |