мозговой пердит, я понял, что проблема моя, спасибо!XSLT - соответствие шаблону шаблона
ответ
Прежде всего: этот стили очень сложный и приносит с собой так много «проблем». Пожалуйста, сделайте мне одолжение и спросите себя, если это правильный путь. Я сомневаюсь в этом.
Fix/Решение:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:java="org.dita.dost.util.GenUtils" exclude-result-prefixes="java">
<xsl:param name="outdir.subsidiary"/>
<xsl:variable name="file-prefix">
<xsl:choose>
<xsl:when test="string-length($outdir.subsidiary) > 0 and not(substring($outdir.subsidiary,string-length($outdir.subsidiary))='/')and not(substring($outdir.subsidiary,string-length($outdir.subsidiary))='\')">
<xsl:value-of select="translate($outdir.subsidiary,
'\/=+|?[]{}()!#$%^&*__~`;:.,-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
'//=+|?[]{}()!#$%^&*__~`;:.,-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')"/><xsl:text>/</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="translate($outdir.subsidiary,
'\/=+|?[]{}()!#$%^&*__~`;:.,-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
'//=+|?[]{}()!#$%^&*__~`;:.,-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:template match="*[(@class) and not(contains(@class,' asc/pnum ')) and not(contains(@class, ' third/fig-meta ')) and not(contains(@class,' asc/linum ')) and not(contains(@class, ' topic/image ')) and not(contains(@class,' asc/pgroup '))]">
<xsl:variable name="generalize" select="substring-before(substring-after(@class,'/'),' ')" />
<xsl:element name="{$generalize}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="data" priority="2"/>
<xsl:template match="image">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:apply-templates select="../data" mode="map" />
<xsl:apply-templates select="node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="*[contains(@class,' third/fig-meta ')]" mode="map">
<alt><xsl:apply-templates select="@*|node()" /></alt>
</xsl:template>
</xsl:stylesheet>
Одно расстройства
XSLT сам решает, какой шаблон соответствует моему текущему узлу для обработки. Внутренний приоритет будет генерироваться в зависимости от правил сложности и точности совпадения. На этом фоне были выполнены неправильные шаблоны, и ваш результат не был похож на ожидаемый. Вы должны установить приоритет для шаблонов самостоятельно. Много раз это показатель, чтобы сделать это неправильно.
xsl:copy-of
будет скопирован без оценки шаблонов. В вашем примере вы хотите выполнить последний шаблон, чтобы переименовать data
в alt
. =><xsl:apply-templates select="../data"/>
.
<xsl:template match="*[contains(@class,' asc/fig-meta ')]">
ничего не соответствует. Изменено на <xsl:template match="*[contains(@class,' third/fig-meta ')]" mode="baum">
. [см. «asc» vs «third»]
mode="map"
не требуется, в противном случае шаблон для удаления data
будет выполнен и выход не будет выполнен.
До сих пор мои два цента на ваш вопрос.
Привет, спасибо за вашу помощь, он многое очистил, но, к сожалению, я не думаю, что он даст мне намеченные результаты, см. Обновленный: [http://xsltransform.net/ejivdGY/4] проблема в том, что первый шаблон соответствует (обобщение) вы исключили элементы из третьего/fig-meta, но мне нужны те, которые должны быть преобразованы в элементы данных. – HelpMeWithXSLT
Для создания 'alt'-тегов существует отдельный шаблон, определенный для' third/fig-meta'. Извините, я не понимаю вашу проблему и ситуацию. Возможно, вы заявляете о своих требованиях, и xslt может быть реорганизован. – uL1
- 1. Соответствие шаблону XSLT REGEX
- 2. Соответствие шаблону XSLT - Удаление предков
- 3. Соответствие шаблону XSLT для преобразования CSV
- 4. Соответствие шаблону SQL, за исключением определенного шаблона
- 5. соответствие шаблону и компиляции
- 6. Соответствие шаблону с долей
- 7. Соответствие шаблону для строки
- 8. xsl: соответствие шаблону не найдено
- 9. Соответствие шаблону регулярного выражения
- 10. Соответствие шаблону Nginx в местоположении
- 11. Соответствие шаблону XSLT с набором атрибутов режима не работает
- 12. Соответствие шаблону xslt для значения дочернего элемента с определенным атрибутом?
- 13. XSLT Соответствие шаблону для изменения атрибута только один раз
- 14. Соответствие шаблону Java Statement
- 15. Соответствие шаблону строки
- 16. Соответствие шаблону MySQL-FULLTEXT
- 17. соответствие шаблону не работает
- 18. Regular Express - Соответствие шаблону
- 19. Соответствие шаблону T-SQL
- 20. Lua Pattern Соответствие шаблону
- 21. Соответствие шаблону списка OCaml
- 22. Соответствие шаблону переменной Grep
- 23. Соответствие шаблону для лямбда?
- 24. Соответствие шаблону в javascript
- 25. Соответствие шаблону в Java
- 26. Соответствие шаблону в файле
- 27. Соответствие шаблону Неравенство
- 28. Соответствие шаблону в C#
- 29. Заменить на соответствие шаблону
- 30. Java - Дата Соответствие шаблону
Можете ли вы изменить свой вопрос, включив свой XSLT? (Вероятно, вы можете удалить переменную 'file-prefix', чтобы сэкономить место). Как замечательно, как http://xsltransform.net/, он длится долгое время, что затрудняет ответ на этот вопрос. Благодаря! –
Я сделал, как вы сказали! :) – HelpMeWithXSLT