Sven101: <de> und <en> Tags auslesen innerhalb von <text> Tags

Hallo an alle,

ich bin dabei eine kleine Portfolio Seite zu erstellen, dessen Inhalte individuell für jeweilige Personen angezeigt werden. Hier ein Auszug:

  <app>
		<tags>
			<tag>User1</tag>
			<tag>User4</tag>
			<tag>User6</tag>
		</tags>
		<title>
			<![CDATA[Name von Portfolio 1]]>
		</title>
		<text>
			<![CDATA[<p>Das hier ist Portfolio 1</p>
				<p>Hier stehen dann diverse Textinhalte</p>
				<p>Hier stehen dann diverse Textinhalte</p>				
		<h2>Features</h2>
		<ul>
			<li>Aufzählung 1</li>
			<li>Aufzählung 2</li>	
		</ul>
		]]>
		</text></app>

Portfolio 1 wird jetzt also nur für User 1, 4 und 6 angezeigt. Das geschieht über die Ausgabe eines Links, z.B.:

http://portfolio.sven.de/User1/passwort/#0

In dieser XML-Datei sind jetzt noch viele weitere Tags mit <app> (Portfolio Inhalte) und überall, bei denen der Tag User1 gesetzt ist, kann über den Beispiellink die einzelnen Portfolio Inhalte eingesehen werden. Bei den Inhalten wo kein User1 gesetzt ist, werden ihm/ihr nicht angezeigt.

Das funktioniert so weit so gut. Jetzt möchte ich aber alles noch 2-sprachig anbieten und zwar innerhalb des Text-Tags, Beispiel:

  <text>
		<de>
			<![CDATA[<p>Das hier ist Portfolio 1</p>
				<p>Hier stehen dann diverse Textinhalte</p>
				<p>Hier stehen dann diverse Textinhalte</p>				
		<h2>Features</h2>
		<ul>
			<li>Aufzählung 1</li>
			<li>Aufzählung 2</li>	
		</ul>
		]]>
		</de>
		<en>
			<![CDATA[<p>This is Portfolio 1</p>
				<p>Content text text</p>
				<p>Content text text</p>				
		<h2>Features</h2>
		<ul>
			<li>Bulletpoint 1</li>
			<li>Bulletpoint 2</li>	
		</ul>
		]]>
		</en>
		</text></app>

Ob nun der deutsche Inhalt oder der englische angezeigt wird, möchte ich gerne über den Link lösen:

http://portfolio.sven.de/de/User1/passwort/#0

http://portfolio.sven.de/en/User1/passwort/#0

Und hier scheitere ich leider kläglichst. Ich weiß nicht, wie ich zum Einen das einfügen/deklarieren muss, damit zwischen <de> und <en> unterschieden wird und zum Anderen wie dies dann an diese Stelle im Link landet.

Ich hoffe wirklich ihr könnt mir dabei helfen.

Vielen Dank schon einmal im Vorfeld!

Gruß Sven

  1. Hallo Sven101,

    ich kann leider überhaupt nicht nachvollziehen, was da passiert. Du zeigst uns - wie es scheint - da ein XML Dokument wo CDATA-Sektionen mit HTML-Fragmenten drinstehen. Wie Du aus der URL ermittelst, welche User diesen Teil sehen dürfen, ist nicht ersichtlich.

    Du hast ein PHP Tag gesetzt. Hast Du also ein PHP Script, das auf Grund der URL aufgerufen wird und das die XML-Datei auswertet und entsprechende Textblöcke an den Browser schickt?

    In dem Fall muss es ja den <text></text> Teil erkennen und herauslösen. Das musst Du um die Sprachauswahl erweitern, d.h. nur den <de> oder nur den <en> Teil ausgeben.

    Wie Du von der URL auf dein PHP Script kommst - das erschließt sich nicht. Du hast User und Passwort als Pfad-Angaben in der URL; es muss also irgendeine Konfiguration geben, die das auf ein PHP Script abbildet (bei Apache vermutlich irgendwelche mod_rewrite-Angaben in der .htaccess Datei); das musst Du so erweitern dass auch der Sprachparameter erkannt und an das PHP Script übergeben wird. Hier müsstest Du erstmal Klarkeit haben, wie das bei Dir überhaupt gebaut ist.

    Und DANN müsste man noch drüber reden, wie man eine sicher Authentifizierung durchführt. User und Passwort in die URL zu schreiben ist jedenfalls ein NO NO NEVER. Sowas macht man über eine vorgeschaltete Login-Seite und Sessions.

    Rolf

    --
    sumpsi - posui - clusi
  2. @@Sven101

    Das funktioniert so weit so gut. Jetzt möchte ich aber alles noch 2-sprachig anbieten und zwar innerhalb des Text-Tags, Beispiel:

      <text>
    		<de>
    			<![CDATA[⋯]]>
    		</de>
    		<en>
    			<![CDATA[⋯]]>
    		</en>
    		</text></app>
    

    Das scheint mir schlecht designt zu sein.

    Warum CDATA?

    de und en sind eher keine Elemente, sondern Attributwerte. Entweder

    <text xml:lang="de"></text>
    <text xml:lang="en"></text>
    

    oder

    <text>
    	<variante xml:lang="de"></variante>
    	<variante xml:lang="en"></variante>
    </text>
    


    Ob nun der deutsche Inhalt oder der englische angezeigt wird, möchte ich gerne über den Link lösen:

    http://portfolio.sven.de/de/User1/passwort/#0

    http://portfolio.sven.de/en/User1/passwort/#0

    Sprachvereinbarung (language negotiation) hast du auf dem Schirm?

    LLAP 🖖

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    1. Hallo Gunnar,

      Warum CDATA?

      Habe ich mich auch gefragt, aber dann überlegt: Da steht ggf. HTML in XML, also ist CDATA eine sinnvolle Kapselung. Andernfalls müsste man XHTML-Notation voraussetzen.

      de und en sind eher keine Elemente, sondern Attributwerte. Entweder

      Stimmt auch - aber so weit habe ich mich ins Thema noch gar nicht reingedacht. Bisher kenne ich das Rohmaterial - XML - und das gewünschte Fertigprodukt - HTML - aber dazwischen befindet sich derzeit noch das "Hier geschieht ein Wunder" Wölkchen, und das hätte ich gerne erstmal detaillierter.

      Language Negotiation - warte mal ab wie gefordert Sven bis hierher ist. Ich kann sein Knowhow absolut nicht einschätzen.

      Rolf

      --
      sumpsi - posui - clusi