XML: добавить новое поле с URL файла - PullRequest
0 голосов
/ 18 октября 2018

У меня есть входной файл с именем myfile.xml с содержанием ниже:

<?xml version="1.0" encoding="UTF-8"?>
<file-format>
<data-set xfer="1.2.840.10008.1.2.1" name="Little Endian Explicit">
<element tag="0008,0018" vr="UI" vm="1" len="64" name="SOPInstanceUID">123</element>
</data-set>
</file-format>

Я хочу добавить поле с именем fileURL, и его значения должны быть путем моего xml с заменой .xml на .jpg Я хочувыходной файл с содержимым ниже:

<?xml version="1.0" encoding="UTF-8"?>
<file-format>
<data-set xfer="1.2.840.10008.1.2.1" name="Little Endian Explicit">
<element tag="0008,0018" vr="UI" vm="1" len="64" name="SOPInstanceUID">123</element>
<element name="fileURL">/user/local/myfile.jpg</element>
</data-set>
</file-format>

Цель состоит в том, чтобы я мог ввести этот файл для поиска и использовать этот URL для индексации позже.Какой лучший способ сделать это?

1 Ответ

0 голосов
/ 18 октября 2018

Для XSLT этот код поможет вам заменить функцию:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">


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

    <xsl:template match="element">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
        <xsl:variable name="self-url" select="replace(base-uri(.), '.xml$', '.jpg')"/>
        <element name="{$self-url}"><xsl:value-of select="$self-url"/></element>
    </xsl:template>


</xsl:stylesheet>
...