SVG: A propos de l'utilisation de & lt; defs & gt; et & lt; utiliser & gt; avec des valeurs de texte variables
J'ai le texte suivant SVG code source qui génère un certain nombre de cases avec des textes de:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20050904/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="600">
<defs>
</defs>
<title>Draw</title>
<g transform="translate(50,40)">
<rect width="80" height="30" x="0" y="-20" style="stroke: black; stroke-opacity: 1; stroke-width: 1; fill: #9dc2de" />
<text text-anchor="middle" x="40">Text</text>
</g>
<g transform="translate(150,40)">
<rect width="80" height="30" x="0" y="-20" style="stroke: black; stroke-opacity: 1; stroke-width: 1; fill: #9dc2de" />
<text text-anchor="middle" x="40">Text 2</text>
</g>
<g transform="translate(250,40)">
<rect width="80" height="30" x="0" y="-20" style="stroke: black; stroke-opacity: 1; stroke-width: 1; fill: #9dc2de" />
<text text-anchor="middle" x="40">Text 3</text>
</g>
</svg>
Comme vous pouvez le voir, j'ai répété la <g></g>
trois fois pour trois de ces boîtes, lorsque SVG a <defs>
et <use>
éléments qui permettent de réutiliser les éléments à l'aide de l'id de références au lieu de répéter leurs définitions. Quelque chose comme:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20050904/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="600">
<defs>
<marker style="overflow:visible;fill:inherit;stroke:inherit"
id="Arrow1Mend" refX="0.0" refY="0.0" orient="auto">
<path transform="scale(0.4) rotate(180) translate(20,0)"
style="fill-rule:evenodd;stroke-width:2.0pt;marker-start:none;"
d="M 0.0,-15.0 L -20.5,0.0 L 0.0,15.0 "/>
</marker>
<line marker-end="url(#Arrow1Mend)" id="systemthread" x1="40" y1="10" x2="40" y2="410" style="stroke: black; stroke-dasharray: 5, 5; stroke-width: 1; "/>
</defs>
<title>Draw</title>
<use xlink:href="#systemthread" transform="translate(50,40)" />
<use xlink:href="#systemthread" transform="translate(150,40)" />
<use xlink:href="#systemthread" transform="translate(250,40)" />
</svg>
Malheureusement, je ne peux pas faire ça avec le premier code SVG depuis que j'ai besoin de textes différents pour chaque zone, tandis que le <use>
balise simplement les doublons 100% de ce qui est défini dans <defs>
.
Est-il possible d'utiliser <defs>
et <use>
avec un certain type de paramètres ou arguments mécanisme comme les appels de fonction?
source d'informationauteur Lukman
Vous devez vous connecter pour publier un commentaire.
Une façon d'atteindre cet objectif avec le courant svg recommandation n'est pas connu pour moi.
Mais il y a un projet de travail pour un svg 2.0 module, voir: SVG Référencé Variables de Paramètre. L'exemple avec les fleurs, il est exactement ce que vous cherchez, je suppose! Mais alors vous avez probablement attendre jusqu'en juin 2010, voire plus, jusqu'à ce que c'est une recommandation du W3C et pris en charge par les clients, je présume.
Pour l'instant, vous pourriez probablement le résoudre à l'aide de scripts.
J'étais à la recherche d'une réponse à ma propre SVG question. Votre question m'a aidé à résoudre ma réponse, je suis donc de répondre à la vôtre.
.... Lire votre question de plus près. Inclus DEUX exemples de code
De l'échantillon #1. Les boîtes de texte
Échantillon n ° 2. Avec les flèches de texte
Échantillon de 1
Remarque dans l'exemple 1 que l'ordre et de la boîte de texte sont importants.
De l'échantillon 2