get value of different grandchild of ancestor
Posted: Mon Jan 18, 2010 7:57 pm
Hi,
I have an xml file which contains (xmp)metadata of an PDF file for printing.
In the xml file there is a list with all used inks.
There is also is a port which says for each page what inks are used, but does not say the name of the ink but its sequence number in the ink list.
I would like to have a list with the names of the used inks for each page.
Something like this:
Inks used from page 1 to page 1: Process cyan, Process magenta, Process yellow, Process black, Pantone 5404
My xml file:
I've tried to do it, but my code doesn't work. (last template, I added my template for the ink list to to make the contents of the file more understandable)
My xslt file:
Anyone who can help me?
I have an xml file which contains (xmp)metadata of an PDF file for printing.
In the xml file there is a list with all used inks.
There is also is a port which says for each page what inks are used, but does not say the name of the ink but its sequence number in the ink list.
I would like to have a list with the names of the used inks for each page.
Something like this:
Inks used from page 1 to page 1: Process cyan, Process magenta, Process yellow, Process black, Pantone 5404
My xml file:
Code: Select all
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<?xml-stylesheet type="text/xsl" href="XMP_omvormen.xslt"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:egGr="http://ns.esko-graphics.com/grinfo/1.0/"
xmlns:egInk="http://ns.esko-graphics.com/inkinfo/1.0/">
<egGr:inks>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<egInk:name>5405</egInk:name>
<egInk:type>pantone</egInk:type>
<egInk:frequency>150.</egInk:frequency>
<egInk:angle>22.5</egInk:angle>
<egInk:dotshape>R</egInk:dotshape>
<egInk:r>.3218039274</egInk:r>
<egInk:g>.4258823395</egInk:g>
<egInk:b>.4894117713</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>583</egInk:name>
<egInk:type>pantone</egInk:type>
<egInk:frequency>150.</egInk:frequency>
<egInk:angle>82.5</egInk:angle>
<egInk:dotshape>R</egInk:dotshape>
<egInk:r>.6988235116</egInk:r>
<egInk:g>.7109804153</egInk:g>
<egInk:b>0.</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>cyan</egInk:name>
<egInk:type>process</egInk:type>
<egInk:frequency>150.</egInk:frequency>
<egInk:angle>15.</egInk:angle>
<egInk:dotshape>C</egInk:dotshape>
<egInk:r>0.</egInk:r>
<egInk:g>.5843137503</egInk:g>
<egInk:b>.8862745166</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>yellow</egInk:name>
<egInk:type>process</egInk:type>
<egInk:frequency>150.</egInk:frequency>
<egInk:angle>90.</egInk:angle>
<egInk:dotshape>C</egInk:dotshape>
<egInk:r>1.</egInk:r>
<egInk:g>.9725490212</egInk:g>
<egInk:b>0.</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>black</egInk:name>
<egInk:type>process</egInk:type>
<egInk:frequency>150.</egInk:frequency>
<egInk:angle>45.</egInk:angle>
<egInk:dotshape>C</egInk:dotshape>
<egInk:r>.1960784346</egInk:r>
<egInk:g>.1960784346</egInk:g>
<egInk:b>.2078431398</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>magenta</egInk:name>
<egInk:type>process</egInk:type>
<egInk:frequency>150.</egInk:frequency>
<egInk:angle>75.</egInk:angle>
<egInk:dotshape>C</egInk:dotshape>
<egInk:r>.8313725591</egInk:r>
<egInk:g>0.</egInk:g>
<egInk:b>.4823529422</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>black</egInk:name>
<egInk:type>process</egInk:type>
<egInk:frequency>133.</egInk:frequency>
<egInk:angle>45.</egInk:angle>
<egInk:dotshape>C</egInk:dotshape>
<egInk:r>.1960784346</egInk:r>
<egInk:g>.1960784346</egInk:g>
<egInk:b>.2078431398</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>marron</egInk:name>
<egInk:type>designer</egInk:type>
<egInk:frequency>120.</egInk:frequency>
<egInk:angle>45.</egInk:angle>
<egInk:dotshape>R</egInk:dotshape>
<egInk:r>.6745098233</egInk:r>
<egInk:g>.4313725531</egInk:g>
<egInk:b>.160784319</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>395</egInk:name>
<egInk:type>pantone</egInk:type>
<egInk:frequency>120.</egInk:frequency>
<egInk:angle>52.5</egInk:angle>
<egInk:dotshape>R</egInk:dotshape>
<egInk:r>.9188235402</egInk:r>
<egInk:g>.8870587945</egInk:g>
<egInk:b>0.</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>8281</egInk:name>
<egInk:type>pantone</egInk:type>
<egInk:frequency>120.</egInk:frequency>
<egInk:angle>7.5</egInk:angle>
<egInk:dotshape>R</egInk:dotshape>
<egInk:r>.4815686345</egInk:r>
<egInk:g>.5549019575</egInk:g>
<egInk:b>.5101960897</egInk:b>
<egInk:attribute>opaque</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>stef</egInk:name>
<egInk:type>designer</egInk:type>
<egInk:frequency>120.</egInk:frequency>
<egInk:angle>52.5</egInk:angle>
<egInk:dotshape>R</egInk:dotshape>
<egInk:r>.2078431398</egInk:r>
<egInk:g>.5098039508</egInk:g>
<egInk:b>.6666666865</egInk:b>
<egInk:attribute>normal</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>Artios Cut</egInk:name>
<egInk:type>designer</egInk:type>
<egInk:frequency>120.</egInk:frequency>
<egInk:angle>45.</egInk:angle>
<egInk:dotshape/>
<egInk:r>.1960784346</egInk:r>
<egInk:g>.1960784346</egInk:g>
<egInk:b>.2078431398</egInk:b>
<egInk:attribute>technical</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>Artios Crease</egInk:name>
<egInk:type>designer</egInk:type>
<egInk:frequency>120.</egInk:frequency>
<egInk:angle>45.</egInk:angle>
<egInk:dotshape/>
<egInk:r>.9482352734</egInk:r>
<egInk:g>0.</egInk:g>
<egInk:b>.1169019639</egInk:b>
<egInk:attribute>technical</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>keyline</egInk:name>
<egInk:type>designer</egInk:type>
<egInk:frequency>120.</egInk:frequency>
<egInk:angle>45.</egInk:angle>
<egInk:dotshape/>
<egInk:r>.4945098162</egInk:r>
<egInk:g>.8823529482</egInk:g>
<egInk:b>.186823532</egInk:b>
<egInk:attribute>technical</egInk:attribute>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egInk:name>vernis</egInk:name>
<egInk:type>designer</egInk:type>
<egInk:frequency>120.</egInk:frequency>
<egInk:angle>45.</egInk:angle>
<egInk:dotshape/>
<egInk:r>.9843137264</egInk:r>
<egInk:g>.9137254953</egInk:g>
<egInk:b>.8431372643</egInk:b>
<egInk:attribute>varnish</egInk:attribute>
</rdf:li>
</rdf:Seq>
</egGr:inks>
</rdf:Description>
<rdf:Description rdf:about=""
xmlns:egPagL="http://ns.esko-graphics.com/pagerangelist/1.0/"
xmlns:egPag="http://ns.esko-graphics.com/pagerange/1.1/">
<egPagL:pagelist>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<egPag:start>0</egPag:start>
<egPag:end>0</egPag:end>
<egPag:inks>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>4</rdf:li>
<rdf:li>5</rdf:li>
<rdf:li>6</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>9</rdf:li>
<rdf:li>12</rdf:li>
<rdf:li>13</rdf:li>
</rdf:Seq>
</egPag:inks>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egPag:start>1</egPag:start>
<egPag:end>1</egPag:end>
<egPag:inks>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>4</rdf:li>
<rdf:li>5</rdf:li>
<rdf:li>6</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>9</rdf:li>
</rdf:Seq>
</egPag:inks>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egPag:start>2</egPag:start>
<egPag:end>2</egPag:end>
<egPag:inks>
<rdf:Seq>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>4</rdf:li>
<rdf:li>5</rdf:li>
<rdf:li>6</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>9</rdf:li>
<rdf:li>10</rdf:li>
<rdf:li>11</rdf:li>
<rdf:li>14</rdf:li>
</rdf:Seq>
</egPag:inks>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<egPag:start>3</egPag:start>
<egPag:end>3</egPag:end>
<egPag:inks>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>4</rdf:li>
<rdf:li>5</rdf:li>
<rdf:li>6</rdf:li>
<rdf:li>7</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>9</rdf:li>
<rdf:li>15</rdf:li>
</rdf:Seq>
</egPag:inks>
</rdf:li>
</rdf:Seq>
</egPagL:pagelist>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
My xslt file:
Code: Select all
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:egInk="http://ns.esko-graphics.com/inkinfo/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:egbarc="http://ns.esko-graphics.com/barcode/1.0/"
xmlns:x="adobe:ns:meta/"
xmlns:egextfl2="http://ns.esko-graphics.com/extfileslist/2.0/"
xmlns:egCadReg="http://ns.esko-graphics.com/cadreg/1.0/"
xmlns:egextfl="http://ns.esko-graphics.com/extfileslist/1.0/"
xmlns:eginkcovl="http://ns.esko-graphics.com/inkcovlist/1.0/"
xmlns:xmpmm="http://ns.adobe.com/xap/1.0/mm/"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:egPDFNat="http://ns.esko-graphics.com/pdfnatversion/1.0/"
xmlns:egextf="http://ns.esko-graphics.com/extfile/1.0/"
xmlns:egCadL="http://ns.esko-graphics.com/cadlist/1.0/"
xmlns:xmprights="http://ns.adobe.com/xap/1.0/rights/"
xmlns:egPagL="http://ns.esko-graphics.com/pagerangelist/1.0/"
xmlns:egbarcl="http://ns.esko-graphics.com/barcodelist/1.0/"
xmlns:egGr="http://ns.esko-graphics.com/grinfo/1.0/"
xmlns:xmpbj="http://ns.adobe.com/xap/1.0/bj/"
xmlns:egfontl="http://ns.esko-graphics.com/fontlist/1.0/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:egfont="http://ns.esko-graphics.com/fontinfo/1.0/"
xmlns:egPag="http://ns.esko-graphics.com/pagerange/1.1/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:date="http://exslt.org/dates-and-times"
xmlns:str="http://exslt.org/strings">
<xsl:import href="date.format-date.template.xsl"/>
<xsl:template match="rdf:RDF">
<html>
<head>
<title>
XMP data voor: <xsl:value-of select="rdf:Description[namespace::*[.='http://purl.org/dc/elements/1.1/']]/dc:title/rdf:Alt/rdf:li"/>
</title>
<style type="text/css">
body {
font-family:Verdana;
font-size:12pt;
padding:0px;
margin:0px;
margin-left:5px;
border:none;
}
h1 {
font-size:16pt;
}
h3 {
font-size:14pt;
margin-top:15px;
margin-bottom:5px;
}
h5 {
font-size:12pt;
margin-top:15px;
margin-bottom:5px;
}
.kleurvak {
position: relative;
top:0px;
left:0px;
height: 15px;
width: 15px;
border: 1px solid black;
margin:2px;
}
#versie-info {
color:#AAAAAA;
font-size: 8pt;
}
</style>
</head>
<body>
XMP data voor: <br/><h1><xsl:value-of select="rdf:Description[namespace::*[.='http://purl.org/dc/elements/1.1/']]/dc:title/rdf:Alt/rdf:li"/></h1>
<xsl:apply-templates select="rdf:Description[
namespace::*[.='http://ns.esko-graphics.com/grinfo/1.0/'] and
namespace::*[.='http://ns.esko-graphics.com/inkinfo/1.0/']
]" />
<xsl:apply-templates select="rdf:Description[
namespace::*[.='http://ns.esko-graphics.com/pagerangelist/1.0/'] and
namespace::*[.='http://ns.esko-graphics.com/pagerange/1.1/']
]" />
</body>
</html>
</xsl:template>
<!-- esko arwork xmp definition: Graphics p14 -->
<xsl:template match="rdf:Description[
namespace::*[.='http://ns.esko-graphics.com/grinfo/1.0/'] and
namespace::*[.='http://ns.esko-graphics.com/inkinfo/1.0/']
]">
<h5>Gebruikte inkten:</h5>
<!-- eerst process inkt -->
<xsl:for-each select="/x:xmpmeta/rdf:RDF/rdf:Description/egGr:inks/rdf:Seq/rdf:li[egInk:type='process']">
<xsl:sort select="egInk:type"/>
<div class="kleurvak" style="background-color:rgb({round(egInk:r*256)},{round(egInk:g*256)},{round(egInk:b*256)});"/>
<b>Process <xsl:value-of select="egInk:name"/><br/></b>
Lineatuur: <xsl:value-of select="round(egInk:frequency)"/> lpi<br/>
Drukhoek: <xsl:value-of select="round(egInk:angle)"/>°<br/>
? Puntvorm: <xsl:value-of select="egInk:dotshape"/><br/>
R:<xsl:value-of select="round(egInk:r*256)"/> G:<xsl:value-of select="round(egInk:g*256)"/> B:<xsl:value-of select="round(egInk:b*256)"/><br/>
? Soort inkt: <xsl:value-of select="egInk:attribute"/><br/>
<br/>
</xsl:for-each>
<!-- dan pantone inkt -->
<xsl:for-each select="/x:xmpmeta/rdf:RDF/rdf:Description/egGr:inks/rdf:Seq/rdf:li[egInk:type='pantone']">
<xsl:sort select="egInk:type"/>
<div class="kleurvak" style="background-color:rgb({round(egInk:r*256)},{round(egInk:g*256)},{round(egInk:b*256)});"/>
<b>Pantone <xsl:value-of select="egInk:name"/><br/></b>
Lineatuur: <xsl:value-of select="round(egInk:frequency)"/> lpi<br/>
Drukhoek: <xsl:value-of select="round(egInk:angle)"/>°<br/>
? Puntvorm: <xsl:value-of select="egInk:dotshape"/><br/>
R:<xsl:value-of select="round(egInk:r*256)"/> G:<xsl:value-of select="round(egInk:g*256)"/> B:<xsl:value-of select="round(egInk:b*256)"/><br/>
? Soort inkt: <xsl:value-of select="egInk:attribute"/><br/>
<br/>
</xsl:for-each>
<!-- dan eigen inkt-->
<xsl:for-each select="/x:xmpmeta/rdf:RDF/rdf:Description/egGr:inks/rdf:Seq/rdf:li[egInk:type='designer']">
<xsl:sort select="egInk:type"/>
<div class="kleurvak" style="background-color:rgb({round(egInk:r*256)},{round(egInk:g*256)},{round(egInk:b*256)});"/>
<b><xsl:value-of select="egInk:name"/><br/></b>
Lineatuur: <xsl:value-of select="round(egInk:frequency)"/> lpi<br/>
Drukhoek: <xsl:value-of select="round(egInk:angle)"/>°<br/>
? Puntvorm: <xsl:value-of select="egInk:dotshape"/><br/>
R:<xsl:value-of select="round(egInk:r*256)"/> G:<xsl:value-of select="round(egInk:g*256)"/> B:<xsl:value-of select="round(egInk:b*256)"/><br/>
? Soort inkt: <xsl:value-of select="egInk:attribute"/><br/>
<br/>
</xsl:for-each>
<br/>
</xsl:template>
<!-- esko artwork pages p30 -->
<xsl:template match="rdf:Description[
namespace::*[.='http://ns.esko-graphics.com/pagerangelist/1.0/'] and
namespace::*[.='http://ns.esko-graphics.com/pagerange/1.1/']
]">
<h3>Used ink on certain pages:</h3>
<xsl:for-each select="egPagL:pagelist/rdf:Seq/rdf:li">
<b>From page <xsl:value-of select="egPag:start"/> until <xsl:value-of select="egPag:end"/></b><br/>
Inkt nr's:
<!-- just ink numbers -->
<xsl:for-each select="egPag:inks/rdf:Seq/rdf:li">
<xsl:value-of select="node()"/><xsl:text>, </xsl:text>
</xsl:for-each><br/><br/>
<!-- try one, diden't work -->
<xsl:for-each select="egPag:inks/rdf:Seq/rdf:li">
<xsl:value-of select="ancestor::*[namespace::*[.='http://ns.esko-graphics.com/inkinfo/1.0/'] and namespace::*[.='http://ns.esko-graphics.com/grinfo/1.0/']]/egGr:inks/rdf:Seq/rdf:li[node()]/egInk:name"/>
</xsl:for-each><br/><br/>
<!-- try two, diden't work -->
<xsl:for-each select="egPag:inks/rdf:Seq/rdf:li">
<xsl:value-of select="/x:metadata/rdf:RDF/rdf:Description[namespace::*[.='http://ns.esko-graphics.com/inkinfo/1.0'] and namespace::*[.='http://ns.esko-graphics.com/grinfo/1.0/']]/egGr:inks/rdf:Seq/rdf:li[node()]/egInk:name"/>
</xsl:for-each><br/><br/>
</xsl:for-each>
<br/><br/>
</xsl:template>
</xsl:stylesheet>