Мне нужно вычислить несколько значений и сохранить их в переменной. Я передаю узел документа в xsl:apply-templates
и задаю режим:
<xsl:variable as="xs:string*" name="checkAccidentalsVisibility">
<xsl:apply-templates mode="checkAccidentalsVisibility" select="$extractMainVersion"/>
</xsl:variable>
Но шаблон для этого режима не совпадает:
<xsl:template match="body//@accid[not(parent::accid/@func[. = 'caution'] or ancestor::note[@grace])]" mode="checkAccidentalsVisibility" >...
Шаблон преобразования идентификаторов указан следующим образом , bcs Мне не нужно копировать дерево xml.
<xsl:template match="node() | @*" mode="extractMainVersion changeAccid">
<xsl:copy>
<xsl:apply-templates mode="#current" select="node() | @*"/>
</xsl:copy>
</xsl:template>
Значением $ checkAccidentalsVisibility является текстовый узел. Например, применительно к этому XML я получаю пример :
<?xml version="1.0" encoding="UTF-8"?>
<mei meiversion="3.0.0" xml:id="dme92517025-f4c2-4231-a1c3-b70f02802d61" xmlns="http://www.music-encoding.org/ns/mei">
<meiHead meiversion="3.0.0">
<fileDesc>
<titleStmt>
<title label="NMA digital" type="unit">an example</title>
</titleStmt>
<pubStmt/>
</fileDesc>
</meiHead>
<music meiversion="3.0.0">
<body>
<mdiv n="2a" xml:id="mdiv_">
<score xml:id="score_">
<section label="menuetto_A" xml:id="section_A_m1-5">
<measure n="1" xml:id="m1_k_">
<staff n="1" xml:id="staff_108">
<layer n="1" xml:id="layer_114">
<note accid.ges="f" dur="2" oct="4" pname="e" tstamp="1" xml:id="note_120"/>
<choice xml:id="choice_132">
<sic xml:id="corr_132">
<note dur="4" oct="4" pname="e" tstamp="3" xml:id="note_132">
<accid accid="f" xml:id="accid_138"/>
</note>
</sic>
<orig xml:id="orig_132">
<note dur="4" oct="4" pname="e" tstamp="3" xml:id="note_132b">
<accid accid="f" xml:id="accid_138b"/>
</note>
</orig>
</choice>
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei>
Я ожидаю последовательность @ xml: id-значений, которые я получаю из своих вычислений.