Замена строки XPAT в XSL

Это просто превентивная мера. Любое приложение может быть потенциально уязвимо для любого возможного эксплойта при неправильном кодировании. Хитрость в уменьшении возможного ущерба заключается в выполнении действий с наименьшими необходимыми привилегиями. Отказ от запуска от имени root, когда это не требуется, - отличное начало.

0
10.09.2018, 00:01
1 ответ

При изменении XML-файлов sedдействительно не лучший выбор, так как он не знает, что редактируемый файл имеет структуру, и с радостью превратит хорошо -сформированный документ в плохо -сформированную кашу.. Вместо этого вам следует использовать инструмент, поддерживающий XML -:. Я буду использовать xsltprocи XSLT, но утилита XML grep, скорее всего, тоже справится с этой задачей.

Во-первых, создайте таблицу стилей преобразования идентичности , которая заменяет старое значение атрибута selectновым:

replace.xslt

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns="http://www.w3.org/TR/xhtml1/strict">
<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>
<xsl:template match="@select[contains(.,'/ns1:Invoice/cac:AccountingSupplierParty/cbc:CustomerAssignedAccountID')]">
  <xsl:attribute name="select">
    <xsl:value-of select="'/ns1:Invoice/cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID'"/>
  </xsl:attribute>
</xsl:template>
</xsl:stylesheet>

Затем запустите xsltprocфайл, который нужно преобразовать:

xsltproc replace.xslt /path/to/inputfile.xml > /path/to/convertedfile.xml

Как обычно, подтвердите правильность преобразования; Я отказался от того, что вы предоставили, поэтому для полного преобразования могут потребоваться другие изменения.

3
28.01.2020, 02:23

Теги

Похожие вопросы