Я пытаюсь понять фрагмент кода XSLT для рабочего проекта, но я просто не могу понять, что вызывает, что и как правильно передаются значения.
У меня есть этот код, который использует элемент apply-templates для выбора первого элемента в элементе типа документа:
<xsl:apply-templates select="DocumentType[string(text())][1]" mode="XmlString">
<xsl:with-param name="name" select="'DocumentType'"/>
</xsl:apply-templates>
Затем в шаблон передается параметр, который присваивает правильное значение. Атрибут name в with-param соответствует элементу param здесь:
<xsl:template match="*" mode="XmlString">
<xsl:param name="name"/>
<!-- Check the "name" parameter : madantory / optional -->
<xsl:call-template name="MandatoryOrOptional">
<xsl:with-param name="name" select="$name"/>
<xsl:with-param name="value" select="."/>
</xsl:call-template>
</xsl:template>
Но я не уверен, почему и как это значение передается. Это многократно используется на карте всякий раз, когда необходимо сопоставить значение.
Обычно я просто создавал необходимые теги и использовал элемент xsl: value-of, чтобы получить желаемое значение из исходного документа. Если бы кто-нибудь мог просветить меня относительно того, как этот код работает на практике, я был бы признателен. Несколько раз я использовал apply-templates, я уже определил шаблон в своем XSLT, а затем использовал атрибут match для его применения.