XML : 使用文件 URL 添加新字段
XML : Add new field with file URL
我有一个名为 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>
这样做的目的是让我可以将此文件输入到 solr 中,并在以后使用此 URL 进行索引。
最好的方法是什么?
对于 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>
我有一个名为 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>
这样做的目的是让我可以将此文件输入到 solr 中,并在以后使用此 URL 进行索引。 最好的方法是什么?
对于 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>