XSLT: удалить один и тот же атрибут из разных тегов в файлах SVG. - PullRequest
0 голосов
/ 07 февраля 2019

Как написать шаблон XSLT для удаления атрибута font-family из <g> или <text> тегов в SVG файлах?

<text font-family="ComicRelief, ComicRelief" transform="translate(14.17 51.75)">S tars</text>
<g font-family="ComicRelief-Bold, ComicRelief Bold" font-weight="700">

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

В дополнение к использованию шаблона, который соответствует всем узлам и копирует их, создайте шаблон empty , который соответствует атрибуту font-family, только если они связаны с узлами g или text элемента.

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:svg="http://www.w3.org/2000/svg">

  <xsl:template match="svg:g/@font-family | svg:text/@font-family"/>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

Примечания:

  • Файлы SVG имеют пространство (имена), они должны быть объявлены в вашей таблице стилей, т.е.xmlns:svg="http://www.w3.org/2000/svg

  • Затем на узлы элементов g и text можно ссылаться, используя svg:g и svg:text соответственно.

0 голосов
/ 07 февраля 2019

Рассматривая ваш ввод следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<Root>
     <text font-family="ComicRelief, ComicRelief" transform="translate(14.17 51.75)">S tars</text>
     <g font-family="ComicRelief-Bold, ComicRelief Bold" font-weight="700"/>
</Root>

Вы можете удалить атрибут с тем же именем из разных тегов xml, как показано ниже:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="*/@font-family"/>

Который должен отображаться вSVG файлы.Вы можете сослаться на преобразование здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...