Help with xpath for Multilingual XML file type with translated content in different parent nodes

Hi,

I'm a bit uncertain of the terminology here but I have a file where the translation content can be nested in different nodes e.g. in the following snippet.

<edit>
        <de-de>Informationen eingeben - Schritt 2</de-de>
        <en-en>Edit details - step 2</en-en>
      </edit>
      <review>
        <de-de>Informationen überprüfen - Schritt 3</de-de>
        <en-en>Review details - step 3</en-en>
      </review>
      <upload>
        <de-de>Dateien hochladen - Schritt 3</de-de>
        <en-en>Upload files - step 3</en-en>
      </upload>

Trados Studio Language Mapping settings showing Languages Root as root and Location for German and English as de-de and en-en respectively.

I though it would be straightforward to use //de-de and //en-en in the language mapping settings of the Multilingual XML filter and this returns just one single de-de node.

Preview of Multilingual XML in Trados Studio with German text 'Ihr Hinweis bezieht sich auf die ##WHISTLERECORD_COMPANY_NAME##' and corresponding bold tags visible.

<?xml version="1.0" encoding="UTF-8" ?>
<root>
  <company>
    <info>
      <de-de>Ihr Hinweis bezieht sich auf die &lt;b&gt;##WHISTLERECORD_COMPANY_NAME##&lt;/b&gt;.</de-de>
      <en-en>Your record refers to &lt;b&gt;##WHISTLERECORD_COMPANY_NAME##&lt;/b&gt;.</en-en>
    </info>
  </company>
  <form>
    <title>
      <edit>
        <de-de>Informationen eingeben - Schritt 2</de-de>
        <en-en>Edit details - step 2</en-en>
      </edit>
      <review>
        <de-de>Informationen überprüfen - Schritt 3</de-de>
        <en-en>Review details - step 3</en-en>
      </review>
      <upload>
        <de-de>Dateien hochladen - Schritt 3</de-de>
        <en-en>Upload files - step 3</en-en>
      </upload>
      <finish>
        <de-de>Meldung abschließen - Schritt 4</de-de>
        <en-en>Finish report - step 4</en-en>
      </finish>
    </title>
    <button>
      <edit>
        <de-de>Informationen speichern</de-de>
        <en-en>Store and review details</en-en>
      </edit>
      <review>
        <de-de>Informationen festschreiben</de-de>
        <en-en>Record details</en-en>
      </review>
    </button>
    <intro>
      <edit>
        <de-de>&lt;p&gt;Ihre Vorgangsnummer lautet ##WHISTLERECORD_REFERENCE##. Bitte notieren Sie sich die Vorgangsnummer und verwahren Sie sie an einem sicheren Ort.&lt;/p&gt;&lt;p&gt;Bitte beantworten Sie alle Fragen möglichst umfassend nach bestem Wissen und Gewissen.&lt;/p&gt;</de-de>
        <en-en>&lt;p&gt;Your record number is ##WHISTLERECORD_REFERENCE##. Please note the record number and keep it in a safe place.&lt;/p&gt;&lt;p&gt;Please answer all questions as fully as possible to the best of your knowledge.&lt;/p&gt;.</en-en>
      </edit>
      <upload>
        <de-de>&lt;p&gt;Ihre Vorgangsnummer lautet ##WHISTLERECORD_REFERENCE##. Wenn Sie sie noch nicht notiert haben, tun Sie dieses bitte an dieser Stelle.&lt;/p&gt;&lt;p&gt;Sie können an dieser Stelle Dateien, die mit dem Vorgang zusammenhängen, hochladen. Bitte beachten Sie, dass manche Dateitypen gesperrt sind.&lt;/p&gt;&lt;p&gt;Die max. erlaubte Dateigröße ist ##UPLOAD_MAX_FILESIZE##.&lt;/p&gt;</de-de>
        <en-en>&lt;p&gt;Your record number is ##WHISTLERECORD_REFERENCE##. If you have not written it down yet, please do so at this point.&lt;/p&gt;&lt;p&gt;You can upload files related to the process at this point. Please note that some file types are locked.&lt;/p&gt;&lt;p&gt;The maximum file size allowed is ##UPLOAD_MAX_FILESIZE##.&lt;/p&gt;</en-en>
      </upload>
      <finish>
        <de-de>Sie haben Ihren Hinweis erfolgreich abgegeben. Wir fassen wie folgt zusammen:
					&lt;ul&gt;
					&lt;li&gt;Sie haben ihren Hinweis &lt;b&gt;##WHISTLERECORD_REPORT_TYPE##&lt;/b&gt; abgegeben.&lt;/li&gt;
					&lt;li&gt;Die Vorgangsnummer für diese Meldung ist &lt;b&gt;##WHISTLERECORD_REFERENCE##&lt;/b&gt;.&lt;/li&gt;
					&lt;li&gt;Bitte merken Sie sich Vorgangsnummer und Passwort und bewahren Sie sie sicher vor dem Zugriff Dritter auf.&lt;/li&gt;
					&lt;li&gt;Ohne die Vorgangsnummer und das Passwort können Sie keine weitere Informationen abgeben und den Fortschritt nicht verfolgen. Wir können Sie ebenfalls nicht kontaktieren.&lt;/li&gt;
					&lt;/ul&gt;
					Die nächsten Schritte sind:
					&lt;ul&gt;
					&lt;li&gt;Bitte löschen Sie die Aufrufseite für das Onlineportal aus dem Browser, damit kein Dritter sehen kann, dass Sie dieses aufgerufen haben.&lt;/li&gt;
					&lt;li&gt;Laut Hinweisgeberschutzgesetz sind wir verpflichtet, zunächst die Anwendbarkeit des Gesetzes zu prüfen.&lt;/li&gt;
					&lt;li&gt;Über das Ergebnis informieren wir Sie im Onlineportal. Sie können Ihren Hinweis unter folgendem Link abrufen: &lt;/li&gt;
					&lt;/ul&gt;</de-de>
        <en-en>You have successfully submitted your notice. We summarise as follows:
					&lt;ul&gt;
					&lt;li&gt;You have submitted your reference &lt;b&gt;##WHISTLERECORD_REPORT_TYPE##&lt;/b&gt;.&lt;/li&gt;
					&lt;li&gt;The record number for this report is &lt;b&gt;##WHISTLERECORD_REFERENCE##&lt;/b&gt;.&lt;/li&gt;
					&lt;li&gt;Please remember the record number and password and keep them safe from third party access.&lt;/li&gt;
					&lt;li&gt;Without the record number and password, you will not be able to provide further information or track progress. We will also not be able to contact you.&lt;/li&gt;
					&lt;/ul&gt;
					The next steps are:
					&lt;ul&gt;
					&lt;li&gt;Please delete the call page for the online portal from your browser so that no third party can see that you have accessed it.&lt;/li&gt;
					&lt;li&gt;According to the Whistleblower Protection Act, we are obliged to first check the applicability of the law.&lt;/li&gt;
					&lt;li&gt;We will inform you about the result in the online portal. You can call up your tip under the following link: &lt;/li&gt;
					&lt;/ul&gt;</en-en>
      </finish>
    </intro>
    <outro>
      <edit>
        <de-de></de-de>
        <en-en></en-en>
      </edit>
      <upload>
        <de-de></de-de>
        <en-en></en-en>
      </upload>
    </outro>
    <display>
      <title>
        <de-de>Hinweisdaten anzeigen</de-de>
        <en-en>Display whistle record data</en-en>
      </title>
    </display>
  </form>
  <employeeStatus>
    <label>
      <de-de>Sind Sie bei dem ausgewählten Unternehmen beschäftigt oder waren Sie dort beschäftigt?</de-de>
      <en-en>Are you employed or have you been employed by the selected company?</en-en>
    </label>
    <info>
      <de-de>Bitte geben Sie an, ob Sie
				&lt;ul&gt;
				&lt;li&gt;in der ##WHISTLERECORD_COMPANY_NAME## beschäftigt sind,&lt;/li&gt;
				&lt;li&gt;in der ##WHISTLERECORD_COMPANY_NAME## beschäftigt waren,&lt;/li&gt;
				&lt;li&gt;sich bei der ##WHISTLERECORD_COMPANY_NAME## bewerben,&lt;/li&gt;
				&lt;li&gt;als Externer in Ihrem beruflichen Kontext von dem Vorfall erfahren haben oder&lt;/li&gt;
				&lt;li&gt;keinen beruflichen Kontext haben.&lt;/li&gt;
				&lt;/ul&gt;
				Wenn Sie keinen beruflichen Kontext haben, sind Sie laut Hinweisgeberschutzgesetz nicht berechtigt, einen Hinweis abzugeben. Wenden Sie sich in diesem Fall bitte an die Behörden.</de-de>
      <en-en>Please indicate if you
	&lt;ul&gt;
				&lt;li&gt;are employed in the ##WHISTLERECORD_COMPANY_NAME##,&lt;/li&gt;
				&lt;li&gt;were employed in the ##WHISTLERECORD_COMPANY_NAME##&lt;/li&gt;
				&lt;li&gt;apply there,&lt;/li&gt;
				&lt;li&gt;have learned of the incident as an external party in your professional context or&lt;/li&gt;
				&lt;li&gt;have no professional context.&lt;/li&gt;
				&lt;/ul&gt;
				If you do not have a professional context, you are not entitled to file a whistleblower report according to the Whistleblower Protection Act. In this case, please contact the authorities.</en-en>
    </info>
    <values>
      <employed>
        <de-de>Ich bin dort beschäftigt.</de-de>
        <en-en>I am employed there.</en-en>
      </employed>
      <formerEmployed>
        <de-de>Ich war dort beschäftigt.</de-de>
        <en-en>I was employed there.</en-en>
      </formerEmployed>
      <applicant>
        <de-de>Ich bewerbe mich um eine Beschäftigung.</de-de>
        <en-en>I am applying for employment.</en-en>
      </applicant>
      <neverEmployed>
        <de-de>Ich arbeite als Externer mit der ##WHISTLERECORD_COMPANY_NAME## zusammen.</de-de>
        <en-en>I cooperate with the organization as an external party.</en-en>
      </neverEmployed>
      <noContext>
        <de-de>Ich habe keinen beruflichen Kontext.</de-de>
        <en-en>I have no professional context.</en-en>
      </noContext>
    </values>
  </employeeStatus>
  <inBusiness>
    <label>
      <de-de>Wie haben Sie von dem Vorfall erfahren?</de-de>
      <en-en>How did you learn about the incident?</en-en>
    </label>
    <info>
      <de-de>Wenn Sie von dem Vorfall im privaten Umfeld erfahren haben, unterliegen Sie nicht dem Schutz des Hinweisgeberschutzgesetzes. Sollten Sie die Informationen sowohl im beruflichen wie im privaten Umfeld erfahren haben, beschränken Sie sich bei der Meldung auf die Informationen aus dem beruflichen Umfeld.</de-de>
      <en-en>If you learned of the incident in your private environment, you are not subject to the protection of the Whistleblower Protection Act. If you learned of the information in both your professional and private environment, limit your report to the information from your professional environment.</en-en>
    </info>
    <values>
      <inBusiness>
        <de-de>Ich habe von dem Vorfall im Rahmen meiner beruflichen Tätigkeit erfahren.</de-de>
        <en-en>I learned about the incident in the course of my professional activities.</en-en>
      </inBusiness>
      <inPrivate>
        <de-de>Ich habe von dem Vorfall im privaten Umfeld erfahren.</de-de>
        <en-en>I learned about the incident in my private life.</en-en>
      </inPrivate>
    </values>
  </inBusiness>
  <existConcealers>
    <label>
      <de-de>Gibt es Personen die versucht haben diesen Vorfall zu verbergen?</de-de>
      <en-en>Are there people who tried to hide this incident?</en-en>
    </label>
    <info>
      <de-de>Wenn Sie über Informationen hierzu verfügen, aber keine Angaben machen, kann dies dazu führen, dass der Vorfall nicht aufgeklärt werden kann, weil wichtige Informationen fehlen.</de-de>
      <en-en>If you have information on this but do not provide it, this may result in the incident not being resolved because important information is missing.</en-en>
    </info>
    <values>
      <yes>
        <de-de>Ja</de-de>
        <en-en>Yes</en-en>
        <event>onclick=&#x27;showConcealers()&#x27;</event>
        <id>existConcealersYes</id>
      </yes>
      <no>
        <de-de>Nein</de-de>
        <en-en>No</en-en>
        <event>onclick=&#x27;hideConcealers()&#x27;</event>
        <id>existConcealersNo</id>
      </no>
      <unknown>
        <de-de>Ist mir nicht bekannt.</de-de>
        <en-en>Is not known to me.</en-en>
        <event>onclick=&#x27;hideConcealers()&#x27;</event>
        <id>existConcealersUnknwon</id>
      </unknown>
      <noDisclose>
        <de-de>Möchte ich nicht preisgeben.</de-de>
        <en-en>I do not want to disclose it.</en-en>
        <event>onclick=&#x27;hideConcealers()&#x27;</event>
        <id>existConcealersNoDisclose</id>
      </noDisclose>
    </values>
  </existConcealers>
  <lineManagersInvolved>
    <label>
      <de-de>Sind Vorgesetzte oder die Universitätsleitung involviert?*</de-de>
      <en-en>Are line managers or general management involved?*</en-en>
    </label>
    <info>
      <de-de>Wenn Sie über Informationen hierzu verfügen, aber keine Angaben machen, kann dies dazu führen, dass der Vorfall nicht aufgeklärt werden kann, weil wichtige Informationen fehlen.</de-de>
      <en-en>If you have information on this but do not provide it, this may result in the incident not being resolved because important information is missing.</en-en>
    </info>
    <values>
      <yes>
        <de-de>Ja</de-de>
        <en-en>Yes</en-en>
        <event>onclick=&#x27;showLineManagers()&#x27;</event>
        <id>lineMangagersInvolvedYes</id>
      </yes>
      <no>
        <de-de>Nein</de-de>
        <en-en>No</en-en>
        <event>onclick=&#x27;hideLineManagers()&#x27;</event>
        <id>lineMangagersInvolvedNo</id>
      </no>
      <unknown>
        <de-de>Ist mir nicht bekannt.</de-de>
        <en-en>Is not known to me.</en-en>
        <event>onclick=&#x27;hideLineManagers()&#x27;</event>
        <id>lineMangagersInvolvedUnknown</id>
      </unknown>
      <noDisclose>
        <de-de>Möchte ich nicht preisgeben.</de-de>
        <en-en>I do not want to disclose it.</en-en>
        <event>onclick=&#x27;hideLineManagers()&#x27;</event>
        <id>lineMangagersInvolvedNoDisclose</id>
      </noDisclose>
    </values>
  </lineManagersInvolved>
  <pendingCase>
    <label>
      <de-de>Dauert der Vorfall immer noch an?*</de-de>
      <en-en>Is the incident still ongoing?*</en-en>
    </label>
    <values>
      <yes>
        <de-de>Ja</de-de>
        <en-en>Yes</en-en>
      </yes>
      <no>
        <de-de>Nein</de-de>
        <en-en>No</en-en>
      </no>
      <unknown>
        <de-de>Ist mir nicht bekannt.</de-de>
        <en-en>Is not known to me.</en-en>
      </unknown>
    </values>
  </pendingCase>
  <generalManagersKnowers>
    <label>
      <de-de>Ist der Vorfall der Universitätsleitung bekannt?*</de-de>
      <en-en>Is the incident known to the university management?*</en-en>
    </label>
    <info>
      <de-de>Wenn Sie über Informationen hierzu verfügen, aber keine Angaben machen, kann dies dazu führen, dass der Vorfall nicht aufgeklärt werden kann, weil wichtige Informationen fehlen.</de-de>
      <en-en>If you have information on this but do not provide it, this may result in the incident not being resolved because important information is missing.</en-en>
    </info>
    <values>
      <yes>
        <de-de>Ja</de-de>
        <en-en>Yes</en-en>
        <event>onclick=&#x27;hideInfoGeneralmanagersKnowers()&#x27;</event>
        <id>generalManagersKnowersYes</id>
      </yes>
      <no>
        <de-de>Nein</de-de>
        <en-en>No</en-en>
        <event>onclick=&#x27;showInfoGeneralmanagersKnowers()&#x27;</event>
        <id>generalManagersKnowersNo</id>
      </no>
      <unknown>
        <de-de>Ist mir nicht bekannt.</de-de>
        <en-en>Is not known to me.</en-en>
        <event>onclick=&#x27;showInfoGeneralmanagersKnowers()&#x27;</event>
        <id>generalManagersKnowersUnknown</id>
      </unknown>
      <noDisclose>
        <de-de>Möchte ich nicht preisgeben.</de-de>
        <en-en>I do not want to disclose it.</en-en>
        <event>onclick=&#x27;showInfoGeneralmanagersKnowers()&#x27;</event>
        <id>generalManagersKnowersNoDisclose</id>
      </noDisclose>
    </values>
  </generalManagersKnowers>
  <howGotKnowledge>
    <label>
      <de-de>Bitte beschreiben Sie, wie Sie von dem Vorfall erfahren haben.</de-de>
      <en-en>Please describe how you learned of the incident.</en-en>
    </label>
  </howGotKnowledge>
  <dataSubjects>
    <label>
      <de-de>Bitte beschreiben Sie, welche Personen von dem Vorfall betroffen sind.</de-de>
      <en-en>Please describe which individuals are affected by the incident.</en-en>
    </label>
    <info>
      <de-de>Soweit möglich geben Sie bitte konkrete Namen an. Ist dies nicht möglich, beschreiben Sie möglichst genau, welche Personengruppen in welchem Zusammenhang (Abteilung, Referat, usw.) betroffen sind.</de-de>
      <en-en>As far as possible, please provide concrete names. If this is not possible, describe as precisely as possible which groups of people are affected in which context (department, unit, etc.).</en-en>
    </info>
  </dataSubjects>
  <concealers>
    <label>
      <de-de>Bitte benennen Sie diese Personen. Welche Maßnahmen haben Sie ergriffen, um die Verschleierung zu verhindern?*</de-de>
      <en-en>Please name these persons. What measures have you taken to prevent concealment?*</en-en>
    </label>
    <info>
      <de-de>Sie sind grundsätzlich nicht verpflichtet Maßnahmen zu ergreifen, um die Verschleierung zu verhindern. Eine mögliche Maßnahme ist die Abgabe eines Hinweises nach Hinweisgeberschutzgesetz.</de-de>
      <en-en>In principle, you are not obliged to take any measures to prevent the concealment. One possible measure is to submit a whistleblower report in accordance with the Whistleblower Protection Act.</en-en>
    </info>
  </concealers>
  <knowers>
    <label>
      <de-de>Bitte benennen Sie die Personen, die noch Kenntnis von diesem Vorfall haben.</de-de>
      <en-en>Please name the people who still have knowledge of this incident.</en-en>
    </label>
    <info>
      <de-de>Soweit möglich geben Sie bitte konkrete Namen an. Ist dies nicht möglich, beschreiben Sie möglichst genau, welche Personengruppen in welchem Zusammenhang (Abteilung, Referat, usw.) betroffen sind.</de-de>
      <en-en>As far as possible, please provide concrete names. If this is not possible, describe as precisely as possible which groups of people are affected in which context (department, unit, etc.).</en-en>
    </info>
  </knowers>
  <lineManagers>
    <label>
      <de-de>Bitte benennen Sie die involvierten Personen aus Universitätsleitung und / oder Führungsebene.</de-de>
      <en-en>Please name the persons involved from general management and / or executive level.</en-en>
    </label>
    <info>
      <de-de>Soweit möglich geben Sie bitte konkrete Namen an. Ist dies nicht möglich, beschreiben Sie möglichst genau, welche Personengruppen in welchem Zusammenhang (Abteilung, Referat, usw.) betroffen sind.</de-de>
      <en-en>As far as possible, please provide concrete names. If this is not possible, describe as precisely as possible which groups of people are affected in which context (department, unit, etc.).</en-en>
    </info>
  </lineManagers>
  <caseDescription>
    <label>
      <de-de>Bitte beschreiben Sie möglichst umfassend, was passiert ist.</de-de>
      <en-en>Please describe what happened as fully as possible.</en-en>
    </label>
  </caseDescription>
  <caseTimestamp>
    <label>
      <de-de>Bitte geben Sie an, wann sich der Vorfall ereignet hat.</de-de>
      <en-en>Please indicate when the incident occurred.</en-en>
    </label>
    <info>
      <de-de>Wichtige Informationen hierzu sind Datum, Uhrzeit, Zeitzone (z.B. CEST = Central European Summer Time).</de-de>
      <en-en>Important information is date, time, time zone (e.g. CEST = Central European Summer Time).</en-en>
    </info>
  </caseTimestamp>
  <caseLocation>
    <label>
      <de-de>Bitte geben Sie an, wo sich der Vorfall ereignet hat.</de-de>
      <en-en>Please indicate where the incident occurred.</en-en>
    </label>
    <info>
      <de-de>Wichtige Informationen hierzu sind Kontinent, Land, Ort, Adresse, ggf. auch Daten in einem geografischen Format.</de-de>
      <en-en>Important information for this is continent, country, city, address, if necessary also data in a geographical format.</en-en>
    </info>
  </caseLocation>
  <truthfullness>
    <info>
      <de-de></de-de>
      <en-en></en-en>
    </info>
    <label>
      <de-de>Ich bestätige, dass ich alle Information nach bestem Wissen und Gewissen abgegeben habe. Mir ist bewusst, dass wissentlich falsch gemachte Angaben rechtliche Folgen für mich haben können.&lt;sup&gt;*&lt;/sup&gt;</de-de>
      <en-en>I certify that I have provided all information to the best of my knowledge. I am aware that any information I know to be false may have legal consequences for me.&lt;sup&gt;*&lt;/sup&gt;</en-en>
    </label>
  </truthfullness>
  <whistleStatus>
    <label>
      <de-de>Ihr Hinweis ist im Status:</de-de>
      <en-en>Your whistle record is in status:</en-en>
    </label>
  </whistleStatus>
</root>

I have attached the complete file and would appreciate any help with the xpath, or confirmation that this filter won't work for this file as the language content is nested in different parent nodes

Many thanks,

Daniel



Generated Image Alt-Text
[edited by: Trados AI at 4:50 AM (GMT 0) on 5 Mar 2024]
emoji
  •  

    I tested in Studio and I can make it work.  I used these expressions:

    "Languages Root":

    //*/de-de/parent::*

    "Languages":

    de-de
    en-en

    I also added some embedded content to handle the html and the hash tag placeholders... forgot to show that in the video:

    Paul Filkin | RWS Group

    ________________________
    Design your own training!

    You've done the courses and still need to go a little further, or still not clear? 
    Tell us what you need in our Community Solutions Hub

    emoji
  • Dear Paul,

    Thank you for sharing your wisdom, I hadn't thought of expressing it that way.

    Best wishes,

    Daniel

    emoji