Have to get data from different nodes and pair them up by the ID numbers, which is identical.
I have several older lists with members (on paper). I have used a program to scan these lists and get an XML out from the system. I have to use this XML to make a comma separated text file, so I can import this into a database eventually.
I can manage to get data out from this, but not from all nodes (not the result I want). Which is totally understandable in the file test.xsl. I have played with another XSL, but I have to admit I don't have enough knowledge of this to be able to get the result I wish...
I have put a small bit of the XML, but changed all names, telephonenumbers and mailadresses to dummy info....
XML:
<BatchObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<BaseTypeContainerList>
<BaseTypeContainer>
<BaseTypeObject>
<Metadata>
<Fields>
<Field ID="fe5eb46b652d447084ada0c2f9967d61" Type="Text" Status="Complete" Label="Master">
<Value>NAVN</Value>
</Field>
</Fields>
<LineItemRows>
<LineItemRow ID="0" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>10000</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Ola</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Nordmann</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="1" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>10001</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Kari</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Nordmann</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="2" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>10002</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Per Nordmann</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>41,64</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="3" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>10003</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Kyrre</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Nordmann</Value>
</Field>
</Fields>
</LineItemRow>
</LineItemRows>
</Metadata>
</BaseTypeObject>
</BaseTypeContainer>
<BaseTypeContainer>
<BaseTypeObject>
<Metadata>
<Fields>
<Field ID="fe5eb46b652d447084ada0c2f9967d61" Type="Text" Status="Complete" Label="Master">
<Value>NAVN</Value>
</Field>
</Fields>
<LineItemRows>
<LineItemRow ID="0" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>11000</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Peter</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Svenske</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="1" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>11001</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Ola</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Svenske</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="2" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>11002</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Ulla</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Svenske</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="3" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>11003</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Lisbeth</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Svenske</Value>
</Field>
</Fields>
</LineItemRow>
</LineItemRows>
</Metadata>
</BaseTypeObject>
</BaseTypeContainer>
<BaseTypeContainer>
<BaseTypeObject>
<Metadata>
<Fields>
<Field ID="fe5eb46b652d447084ada0c2f9967d61" Type="Text" Status="Complete" Label="Master">
<Value>NAVN</Value>
</Field>
</Fields>
<LineItemRows>
<LineItemRow ID="0" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>12000</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Iben</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Danske</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="1" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>12001</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Caroline</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Danske</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="2" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>12002</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Helena</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Danske</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="3" FromPage="1">
<Fields>
<Field ID="1369a681341c46b397ec48c1b0b4e854" Type="Text" Status="Complete" Label="ID">
<Value>12003</Value>
</Field>
<Field ID="8b988aa50f90488da0191e8a45b0bc75" Type="Text" Status="Complete" Label="Fornavn">
<Value>Viggo</Value>
</Field>
<Field ID="2e161025f36a432dbb8c81a20e2326f4" Type="Text" Status="Complete" Label="Etternavn">
<Value>Danske</Value>
</Field>
</Fields>
</LineItemRow>
</LineItemRows>
</Metadata>
</BaseTypeObject>
</BaseTypeContainer>
<BaseTypeContainer>
<BaseTypeObject>
<Metadata>
<Fields>
<Field ID="feae1e60ee1c4cad9907d86885302cdb" Type="Text" Status="Complete" Label="Master">
<Value>TELEMAIL</Value>
</Field>
</Fields>
<LineItemRows>
<LineItemRow ID="0" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>10000</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12345601</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test01@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="1" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>11000</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12346502</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test02@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="2" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>12000</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12345603</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test03@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="3" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>10001</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12345604</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test04@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="4" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>11001</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12345605</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test05@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="5" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>12001</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12346506</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test06@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="6" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>10002</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12345607</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test07@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="7" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>11002</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12345608</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test08@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="8" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>12002</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12346509</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test09@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="9" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>10003</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12346510</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test10@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="10" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>11003</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12346511</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test11@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
<LineItemRow ID="11" FromPage="1">
<Fields>
<Field ID="cfba0c9c03b04bfbaefdc5dd234eab9c" Type="Text" Status="Complete" Label="ID2">
<Value>12003</Value>
</Field>
<Field ID="785600ee0d02457d906d61a8769b9020" Type="Text" Status="Complete" Label="Telefon">
<Value>12345612</Value>
</Field>
<Field ID="46d6f4088b794e96954e03defb19d1eb" Type="Text" Status="Complete" Label="Mail">
<Value>test12@mail.com</Value>
</Field>
</Fields>
</LineItemRow>
</LineItemRows>
</Metadata>
</BaseTypeObject>
</BaseTypeContainer>
</BaseTypeContainerList>
</BatchObject>
First XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:variable name="separator" select="';'" />
<xsl:variable name="newline" select="' '" />
<xsl:template match="/">
<xsl:for-each select="//BatchObject/BaseTypeContainerList/BaseTypeContainer/BaseTypeObject/Metadata">
<xsl:value-of select="LineItemRows/LineItemRow/Fields/Field[@Label='ID']/Value"/>
<xsl:value-of select="$separator" />
<xsl:value-of select="LineItemRows/LineItemRow/Fields/Field[@Label='Fornavn']/Value"/>
<xsl:value-of select="$separator" />
<xsl:value-of select="LineItemRows/LineItemRow/Fields/Field[@Label='Etternavn']/Value"/>
<xsl:value-of select="$separator" />
<xsl:value-of select="LineItemRows/LineItemRow/Fields/Field[@Label='Telefon']/Value"/>
<xsl:value-of select="$separator" />
<xsl:value-of select="LineItemRows/LineItemRow/Fields/Field[@Label='Mail']/Value"/>
<xsl:value-of select="$newline" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Latest XSL:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no"/>
<xsl:template match="/">
<xsl:variable name="current_batch" select="BatchObject" />
<xsl:for-each select="/BatchObject/BaseTypeContainerList/BaseTypeContainer">
<xsl:if test="BaseTypeObject/Metadata/Fields/Field[@Label='Master']/Value !='NAME'"> <!--TESTER OM DET ER EN NAVNELISTE ELLER ANNET DOKUMENT-->
<xsl:variable name="current_item" select="." />
<xsl:for-each select="BaseTypeObject/Metadata/LineItemRows/LineItemRow">
<xsl:variable name="current_line" select="." />
<xsl:variable name="IDnummer" select="/$current_item/BaseTypeObject/Metadata/Fields/Field[@Label='ID']/Value"/>
<xsl:for-each select="/BatchObject/BaseTypeContainerList/BaseTypeContainer">
<xsl:if test="BaseTypeObject/Metadata/Fields/Field[@Label='Master']/Value ='NAME'"> <!--TESTER OM DET ER EN NAVNELISTE ELLER ANNET DOKUMENT-->
<xsl:if test="BaseTypeObject/Metadata/Fields/Field[@Label='ID2']/Value =$IDNummer">
<xsl:for-each-group select="BaseTypeObject/Metadata/LineItemRows/LineItemRow" group-by="Fields/Field[@Label='ID2']/Value">
<xsl:if test="Fields/Field[@Label='ID2']/Value = $IDNummer">
<xsl:value-of select="translate(current-group()[1]/Fields/Field[@Label='ID']/Value,',','.')"/>
</xsl:if>
</xsl:for-each-group>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
With the first XSL, I obviously could not get data that was paired by the ID, from the XML.
The second one I have tried that...but I can not get any data out from the XML.
Wanted result
10000;Ola;Nordmann;12345601;test01@mail.com
10001;Kari;Nordmann;1234602;test02@mail.com
10002;Per;Nordmann;12345603;test03@mail.com
10003;Kyrre;Nordmann;1234604;test04@mail.com
11000;Peter;Svenske;12346505;test05@mail.com
11001;Ola;Svenske;12346506;test06@mail.com
11002;Ulla;Svenske;12346507;test07@mail.com
11003;Lisbeth;Svenske;12346508;test08@mail.com
12000;Iben;Danske;12346509;test09@mail.com
12001;Caroline;Danske;12346510;test10@mail.com
12002;Helena;Danske;12346511;test11@mail.com
12003;Viggo;Danske;12346512;test12@mail.com
Assuming you can use XSLT 2 or 3 as the second stylesheet tries I think you simply want an approach like
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="3.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:for-each-group select="//LineItemRow" group-by="Fields/Field[@Label = ('ID', 'ID2')]/Value">
<xsl:value-of
select="current-grouping-key(),
current-group()/Fields/Field[@Label = 'Fornavn']/Value,
current-group()/Fields/Field[@Label = 'Etternavn']/Value,
current-group()/Fields/Field[@Label = 'Telefon']/Value"
separator=";"/>
<xsl:text> </xsl:text>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
https://xsltfiddle.liberty-development.net/3NJ391c
I haven't spelled out all data you want to list but it should be clear how to select additional data in the value-of
from the current-group().
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.