Salut tout le monde,
Je travail sur un petit programme de gestion des documment 3D en PLMXML, le but est de choisir la pièce qu'on souhaite affiché, et par la suite joué sur sa couleur et sa transparence, pour l'instant je sait selectionné n'importe qu'elle pièce, le fichier PLMXML source représente un moteur a deux cylindres(juste pour l'info) et donc, il y a des pièces composées, le but de cette 2ème partie est d'affiché les parties quand je rentre en paramètre une pièce composée. voici la solution a la quel j'ai pensé, mais il me manque encore quelque astuces:
Dans la partie XX, je veux mettre le résultat de:
Le problème c'est que dans <instanceRefs> on peut trouvez plusieurs valeurs (quand la pièce est composé de plulieurs parties), la dificulté est de faire la même chose pour chaque veleurs (les valeurs sont séparé par des espaces).
Exemple du fichier source plmxml:
Je compte sur vos idées
Merci
Modifié par aadari (19 Oct 2007 - 15:55)
Je travail sur un petit programme de gestion des documment 3D en PLMXML, le but est de choisir la pièce qu'on souhaite affiché, et par la suite joué sur sa couleur et sa transparence, pour l'instant je sait selectionné n'importe qu'elle pièce, le fichier PLMXML source représente un moteur a deux cylindres(juste pour l'info) et donc, il y a des pièces composées, le but de cette 2ème partie est d'affiché les parties quand je rentre en paramètre une pièce composée. voici la solution a la quel j'ai pensé, mais il me manque encore quelque astuces:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method='xml' encoding='ISO-8859-1' indent='yes'/>
<xsl:template match="/">
<PLMXML>
<ProductDef id="id1">
<InstanceGraph id="id2" rootRefs="inst1798736">
<xsl:apply-templates/>
</InstanceGraph>
</ProductDef>
</PLMXML>
</xsl:template>
<xsl:param name="inst"/>
<xsl:param name="id"/>
<xsl:template match="//Instance[@id='inst1798736']">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="//Instance[@id=$inst]">
<xsl:copy-of select="."/>
</xsl:template>
<!--
<xsl:template match="//Instance[@id=XX]">
<xsl:copy-of select="."/>
<xsl/template>
-->
<xsl:template match="//Part[@id='id14']">
<Part id="id14" name="2_Cylinder_Engine" type="assembly">
<xsl:attribute name="instanceRefs">
<xsl:value-of select="$inst"/>
</xsl:attribute>
</Part>
</xsl:template>
<xsl:template match="//Part[@id=$id]">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="text()"></xsl:template>
</xsl:stylesheet>
Dans la partie XX, je veux mettre le résultat de:
<xsl:template select="//Part[@id=$id]">
<xsl:value-of select="@instanceRefs"/>
</xsl:template>
Le problème c'est que dans <instanceRefs> on peut trouvez plusieurs valeurs (quand la pièce est composé de plulieurs parties), la dificulté est de faire la même chose pour chaque veleurs (les valeurs sont séparé par des espaces).
Exemple du fichier source plmxml:
...
<Part id="id64" name="Piston Sub:;0,Parts" instanceRefs="inst1912768 inst1865720" type="assembly">
<Occurrence id="id66">
<Transform id="id67">...</Transform></Occurrence></Part>
<Part id="id74" name="Piston:123-844;0,Parts" type="solid">
<Bound id="id80" values="..."></Bound>
...
Je compte sur vos idées
Merci
Modifié par aadari (19 Oct 2007 - 15:55)