Вместо этого вы можете передать его с помощью extra-vars
.
Просто сделайте раздел hosts
переменной, например {{ hosts_prompt }}
, а затем передайте хост в командной строке например:
ansible-playbook -i inventory/environment playbook.yml --extra-vars "hosts_prompt=192.168.1.10"
Или, если вы используете местоположение файла инвентаря по умолчанию в /etc/ansible/hosts
, вы можете просто использовать:
ansible-playbook playbook.yml --extra-vars "hosts_prompt=192.168.1.10"
почему предыдущий код выводит TEXT, почему я должен настаивать на том, чтобы XSL игнорировал все остальные тексты? заключается в том, что поведение всех парсеров XML или только моего собственного
blockquote>. Вы обнаруживаете одну из самых фундаментальных функций XSLT, как указано в Спецификации: встроенные шаблоны XSLT .
Из Spec :
Существует встроенное правило шаблона, позволяющее продолжить рекурсивную обработку в отсутствие успешного совпадения шаблона с помощью явного правила шаблона в таблице стилей. Это правило шаблона применяется как к узлам, так и к корневому узлу. Ниже показано эквивалентное встроенное правило шаблона:
<xsl:template match="*|/"> <xsl:apply-templates/> </xsl:template>
Существует также встроенное правило шаблона для каждого режима, что позволяет продолжить рекурсивную обработку в том же режиме в отсутствие успешное совпадение шаблонов с помощью явного правила шаблона в таблице стилей. Это правило шаблона применяется как к узлам, так и к корневому узлу. Ниже приведен эквивалент встроенного правила шаблона для режима m.
<xsl:template match="*|/" mode="m"> <xsl:apply-templates mode="m"/> </xsl:template>
Существует также встроенное правило шаблона для узлов текста и атрибута, которые копируют текст через:
<xsl:template match="text()|@*"> <xsl:value-of select="."/> </xsl:template>
Встроенное правило шаблона для обработки инструкций и комментариев - ничего не делать.
<xsl:template match="processing-instruction()|comment()"/>
Встроенное правило шаблона для узлов пространства имен также ничего не значит. Нет шаблона, который может соответствовать узлу пространства имен; поэтому встроенное правило шаблона является единственным правилом шаблона, которое применяется для узлов пространства имен.
Встроенные правила шаблонов обрабатываются так, как если бы они были импортированы неявно перед таблицей стилей и поэтому имеют более низкий приоритет импорта чем все другие правила шаблонов. Таким образом, автор может переопределить встроенное правило шаблона, включив явное правило шаблона.
blockquote>Таким образом, сообщаемое поведение является результатом применения встроенных шаблонов - 1-й и 2-й из всех трех.
Хороший шаблон дизайна XSLT позволяет переопределить встроенные шаблоны с вашим собственным, который будет вызывать сообщение об ошибке при вызове так, чтобы программист сразу узнал, что его трансформация «утечка»:
Например, если есть этот XML-документ:
<a> <b> <c>Don't want to see this</c> </b> </a>
и он обрабатывается с помощью этого преобразования:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="a|b"> <xsl:copy> <xsl:attribute name="name"> <xsl:value-of select="name()"/> </xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template> </xsl:stylesheet>
результат:
<a name="a"> <b name="b">Don't want to see this</b> </a>
, и программист будет очень путать, как появился нежелательный текст.
Однако просто добавление этого параметра
catch-all template
помогает избежать любые такие путаницы и ошибки уловов сразу:<xsl:template match="*"> <xsl:message terminate="no"> WARNING: Unmatched element: <xsl:value-of select="name()"/> </xsl:message> <xsl:apply-templates/> </xsl:template>
Теперь, помимо запутанного вывода, программист получает предупреждение, которое немедленно объясняет проблему:
WARNING: Unmatched element: c
В XSL существует несколько правил шаблона , один из которых:
<xsl:template match="text()|@*">
<xsl:value-of select="."/>
</xsl:template>
Он выводит текст.
&
в исходном тексте на &amp;
на выходе. Чтобы этого избежать, добавьте disable-output-escaping="yes"
в качестве атрибута к элементу <xsl:value-of>
.
– Jens
25 May 2016 в 00:54
"So, the reported behavior is the result of the application of the built-in templates -- the 2nd of all three of them"
– Dimitre Novatchev 31 July 2010 в 17:18