Bildoben  
aptico-Home | AGB-(c) | SVG-Tutorial Inhalt
Schatten

SVG Tutorial

  svg tutorial index  |  Kapitel 7   

7.6 Auswahlmoeglichkeiten - das switch-Element

Das switch-Element wertet die Testattribute systemLanguage, requiredFeatures oder requiredExtensions seiner direkten Kindelemente in ihrer Reihenfolge aus.
Nur das erste (!) Kindelement, bei dem alle verwendeten Testattribute true zurückliefern, wird am Bildschirm dargestellt.

Alle (!) anderen bzw. weiteren Kindelemente werden nicht dargestellt, ungeachtet ob auch deren Testattribute true zurückliefern.

Falls es sich bei einem Kindelement von switch um ein Container-Element (wie das g-Element) handelt, werden alle Elemente innerhalb dieses Containers angezeigt.

Nachfolgend 3 Beispiele, welche die Verwendung der 3 unterschiedlichen Testattribute zeigen.

Im ersten Beispiel wird, je nach der im System eingestellten Sprache, ein entsprechendes Länderkürzel angezeigt. Dazu wird das Test-Attribut systemLanguage verwendet, das eine zulässiges Länderkürzel wie de, en, fr, etc. als Wert akzeptiert.
Die Darstellung von Text in SVG Dokumenten wird im nächsten Kapitel erläutert.

Beispiel Quellcode


   Grafische Darstellung:   SVG-Darstellung (nur SVG-fähige Browser!)    Screenshot JPG-Grafik
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"
  xmlns:xlink="http://www.w3.org/1999/xlink">
<title>das switch-Element</title>
<desc>eine Auswahl nach der Systemsprache</desc>

<defs>
  <style type="text/css">
  <![CDATA[
    text {font-family:verdana,sans-serif; font-size:20px; font-weight:bold;}
    circle {fill:lightgreen; stroke:black;}
  ]]>
  </style>
</defs>

<!-- der switch Bereich -->
<switch>
  <g systemLanguage="en">
    <circle cx="100" cy="95" r="20" />
    <text x="87" y="102">en</text>
  </g>

  <g systemLanguage="de">
    <circle cx="100" cy="95" r="20" />
    <text x="87" y="102">de</text>
  </g>

  <g systemLanguage="fr">
    <circle cx="100" cy="95" r="20" />
    <text x="87" y="102">fr</text>
  </g>
</switch>
</svg>
      

Im zweiten Beispiel wird das Test-Attribut requiredFeatures verwendet. Damit kann überprüft werden, ob der User Agent ein bestimmtes Feature von SVG, wie z.B. Verläufe oder Animationen unterstützt.
Die zulässigen Werte für dieses Attribut, sogenannte feature strings, unterscheiden sich jedoch in den SVG Standards.

In SVG 1.0 werden feature strings mit folgender Präfix verwendet:
org.w3c.svg.
So ist z.B. org.w3c.svg.static eine gültige Wertzuweisung fü requiredFeatures nach SVG 1.0 und bedeutet, dass die grundlegenden Möglichkeiten des SVG Standards unterstützt werden müssen.
Dazu gehören: Grundlegende Datentypen, Elemente der Dokumentstruktur, CSS-Unterstützung, Transformationen, Pfade, Marker, geometrische Formen, Text, Attribute für Painting, Verläufe und Muster, Masken, Filter und SVG Fonts.
Dazu gehören nicht: Erzeugung einer DOM-Struktur für Skriptsprachen, Animationen und Hyperlinks.

In SVG 1.1 werden feature strings mit folgender Präfix verwendet:
http://www.w3.org/TR/SVG11/feature#.
So ist z.B. http://www.w3.org/TR/SVG11/feature#SVG-static eine gültige Wertzuweisung für requiredFeatures nach SVG 1.1 und bedeutet ebenfalls, dass die grundlegenden Möglichkeiten des SVG Standards unterstützt werden müssen.
In SVG 1.1 ist allerdings eine größere Anzahl von feature strings verfügbar, wobei man die unterschiedlichen Möglichkeiten auch einzeln abfragen kann (z.B. nur Gradienten oder Text). Dies macht eine genauere Überprüfung der vom User Agent unterstützten SVG Features möglich.

Eine ausführliche Beschreibung der feature strings finden Sie in der W3C SVG 1.1 Recommendation - Appendix O: Feature Strings.

Beispiel Quellcode


   Grafische Darstellung:   SVG-Darstellung (nur SVG-fähige Browser!)    Screenshot JPG-Grafik
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"
  xmlns:xlink="http://www.w3.org/1999/xlink">
<title>das switch-Element 2</title>
<desc>eine Auswahl nach unterstützten Features</desc>

<defs>
  <style type="text/css">
  <![CDATA[
    text {font-family:verdana,sans-serif; font-size:20px; font-weight:bold;}
  ]]>
  </style>
 <linearGradient id="lgr1"
   x1="0" y1="0" x2="1" y2="0">
   <stop offset="0" stop-color="limegreen" />
   <stop offset="1" stop-color="yellow" />
 </linearGradient>
</defs>

<switch>
<!-- feature string nach SVG 1.0 -->
<!-- Anzeige der folgenden Gruppe, wenn z.B. Grandienten unterstützt werden -->
  <g requiredFeatures="org.w3c.svg.static">
    <g>
      <circle cx="100" cy="95" r="60" fill="url(#lgr1)" />
      <text x="100" y="102" text-anchor="middle">feature</text>
    </g>
  </g>

<!--Anzeige der folgenden Gruppe, im Sonst-Fall -->
  <g>
    <g>
      <circle cx="100" cy="95" r="60" fill="red" />
      <text x="100" y="102" text-anchor="middle">nix feature</text>
    </g>
  </g>
</switch>
</svg>
      

Im letzten Beispiel wird das Test-Attribut requiredExtensions verwendet. Damit kann überprüft werden, ob der User Agent bestimmte SVG Erweiterungen unterstützt.
Das Attribut requiredExtensions benötigt eine URL, die i.d.R. einen Namensraum bezeichnet, als Wertzuweisung.

Im folgenden SVG Dokument wird überprüft ob der User Agent die Hyperlink-Erweiterungen des Adobe SVG Viewers unterstützt (was nur der Fall ist, wenn sie diesen Viewer verwenden). Im Ja-Fall wird - nach notwendiger Downloadzeit - eine kurze mp3-Sound-Datei immer wieder abgespielt und ein passender Text angezeigt.

Beispiel Quellcode


   Grafische Darstellung:   SVG-Darstellung (nur SVG-fähige Browser!)    Screenshot JPG-Grafik
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="100"
  xmlns:a="http://www.adobe.com/svg10-extensions" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>das switch-Element 3</title>
<desc>eine Auswahl nach unterstützten SVG Erweiterungen</desc>

<defs>
  <style type="text/css">
  <![CDATA[
    text {font-family:verdana,sans-serif; font-size:20px; font-weight:bold;}
  ]]>
  </style>
</defs>

<switch>
<!-- Abspielen eines Sounds und Anzeige eines Textes -->
<!-- wenn die Hyperlink-Erweitungen des Adobe SVG Viewers unterstützt werden -->
  <g requiredExtensions="http://www.adobe.com/svg10-extensions">
    <a:audio xlink:href="sound64.mp3" begin="0" volume="10" repeatCount="indefinite" />
    <text x="100" y="60" text-anchor="middle">Sound in SVG</text>
  </g>

<!-- Nur Anzeige eines Textes, im Sonst-Fall -->
  <g>
    <text x="100" y="60" text-anchor="middle">kein Sound</text>
  </g>
</switch>
</svg>
      



index  |  Kapitel 7  |  7.5  <<  | 7.6 |  >>  8   Text