Il y a un XSL qui comprend un autre XSL:XPath: Sélection de noeuds inclus par un <xsl:include>
<xsl:include href="registered.xsl"/>
Ce fichier inclus a une liste de nœuds:
<g:registered>
<node1/>
<node2/>
</g:registered>
Documentation dit que « les enfants du <xsl:stylesheet>
élément dans ce document remplacer l'élément dans le document inclus ", donc je pense que, étant donné que la directive include a fonctionné, je peux sélectionner g: nœuds enregistrés comme s'ils appartenaient toujours au document inclus:
select="document('')/xsi:schema/g:registered"
Cela retourne un ensemble de nœuds vide.
Cependant, ceci:
select="document('registered.xsl')/xsi:schema/g:registered"
ne sélectionne ce qui est nécessaire, mais, comme je le suppose, signifie ouvrir le fichier inclus pour la deuxième fois ce qui ne semble pas agréable pour moi.
Alors, comment puis-je les sélectionner sans ouvrir le fichier une seconde fois?
EDIT
structure du document demandé: document inclus:
<?xml version='1.0' encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:g="http://www.sample.com/ns">
<g:registered-templates>
<SampleTemplate/>
<WrongTemplate/>
</g:registered-templates>
<xsl:include href="Sample Template.xsl" />
<xsl:include href="Wrong Template.xsl" />
</xsl:stylesheet>
y compris le document:
<?xml version='1.0' encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:g="http://www.sample.com/ns">
<xsl:output method="text"/>
<xsl:include href="Label Registration.xsl"/>
<!-- How do I refer to just loaded inclusion without directing engine to the file again? -->
<xsl:variable name="template-names" select="document('Label Registration.xsl')/xsl:stylesheet/g:registered-templates"/>
<xsl:template match="Job">
<xsl:for-each select="WorkItem">
<xsl:apply-templates select="$template-names/*[local-name()=current()/@name]">
<xsl:with-param name="context" select="." />
</xsl:apply-templates>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Veuillez montrer la structure des documents principaux et inclus (ie les éléments racine et tous les nœuds du chemin de la racine vers le xsl: include (dans le document principal) et le g: registered node (dans le document inclus) Sans cela, il est peu probable que vous obteniez beaucoup d'aide. –
Ok, je pensais juste avoir présenté toutes les informations pertinentes. – GSerg