Я сделал это, просто я написал тот же XML входящий файл, что и вы, так что это тот же вход и выход.
Вот XML / HTML Файл:
<?xml version="1.0" encoding="UTF-8"?>
<section>
<p class="p heading">Heading</p>
<p class="normal">Text</p>
<ul>
<li>
<p class="p">
<span class="bold">Check</span> - Remaining
</p>
</li>
</ul>
</section>
Примечания: Для тегов HTML нам не нужно использовать:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:math="http://www.w3.org/2005/xpath-functions/math"
xmlns:map="http://www.w3.org/2005/xpath-functions/map"
xmlns:array="http://www.w3.org/2005/xpath-functions/array"
exclude-result-prefixes="#all"
Вы должны быть осторожны при импорте некоторых библиотек. Если вы добавили слишком много, ваш код займет больше времени. Это потому, что ваш код должен сначала создать все ссылки на ссылки и .co. Это может быть причиной некоторых ошибок, как и в Java.
С помощью [@...='...']
мы можем вызвать определенные c модификации элемента, например <normal style="CD Bold">
, например: normal[@style='CD Bold'
Мои результаты:
<?xml version="1.0" encoding="UTF-8"?><?xe.source ../TemporaryFiles/Test_XML_1.xml?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
<xsl:output media-type="text/xml" method="xml"></xsl:output>
<xsl:template match="/">
<section>
<p style="Headings">
<normal>
<xsl:value-of select="/section/p[@class='p heading']"></xsl:value-of>
</normal>
</p>
<p style="Actual">
<normal>
<xsl:value-of select="/section/p[@class='normal']"></xsl:value-of>
</normal>
</p>
<p class="p">
<normal style="CD Bold">
<xsl:value-of select="/section/ul/li/p[@class='p']/span[@class='bold']"></xsl:value-of>
</normal>
<normal style="normal">
-<xsl:value-of select="substring-after(/section/ul/li/p[@class='p'],'-')"></xsl:value-of>
</normal>
</p>
</section>
</xsl:template>
</xsl:stylesheet>
Строка <?xe.source ../Temporary Files/Test_XML_1.xml?>
используется для добавления файла XML непосредственно в XSLT-файл. Путь должен совпадать с вашим
Я добился вашего ожидания с помощью этого простого файла XSLT.
Вот результат:
<?xml version="1.0" encoding="UTF-8"?>
<section>
<p style="Headings">
<normal>Heading</normal>
</p>
<p style="Actual">
<normal>Text</normal>
</p>
<p class="p">
<normal style="CD Bold">Check</normal>
<normal style="normal"> - Remaining </normal>
</p>
</section>
, если вы хотите получить жирный шрифт в <p class="p">
вы можете использовать эти строки кода здесь:
<normal style="CD Bold">
<xsl:value-of select="/section/ul/li/p[@class='p']/span[@class='bold']"></xsl:value-of> - <xsl:value-of select="substring-after(/section/ul/li/p[@class='p'],' - ')"></xsl:value-of>
</normal>