в принципе, вы можете воспользоваться одним из двух стратегий:
Начинается с преобразования шаблона, который копирует все по умолчанию; затем добавьте шаблоны для соответствия любым узлам, которые вы хотите изменить как исключение; Это то, что вы начали делать - теперь вам нужно только добавить пустой шаблон/s, чтобы удалить узлы, которых вы не хотите.
Выберите только те узлы, которые вы хотите; так как есть только один, это было бы, безусловно, предпочтительной стратегией в данном случае:
XSLT 1,0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<p>
<xsl:value-of select="document/body/p/r/t" />
</p>
</xsl:template>
</xsl:stylesheet>
возвращение результат из:
<?xml version="1.0" encoding="UTF-8"?>
<p>Title</p>
Вышеупомянутое предполагает, что вы действительно хотите, чтобы конкретное значение элемента <t>
- не только любой текстовый узел/s, который является потомком/s элемента <p>
вашего ввода. Если это предположение неверно, сделайте это вместо:
XSLT 1,0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<p>
<xsl:value-of select="document/body/p" />
</p>
</xsl:template>
</xsl:stylesheet>
Не могли бы вы опубликовать свою попытку. –
** Пожалуйста, не задавайте один и тот же вопрос дважды !! ** http://stackoverflow.com/questions/28362715/how-to-remove-specific-elements-but-not-the-text-inside-it- используя-XSLT –