簡體   English   中英

將常規XML轉換為Dublin Core XML時添加名稱空間前綴

[英]Adding namespace prefix when transforming regular XML into Dublin Core XML

我很可能會遺漏一些明顯的東西,但是我不清楚如何編碼XSLT樣式表以轉換一個“常規” XML文件以生成都柏林核心XML文件,該文件在每個元素上都包含名稱空間“ dc”前綴。 我在這里查看了許多其他答案,但似乎無法弄清楚該如何做。 (我正在使用msxsl.exe進行轉換。)

例如,我正試圖從我的原始XML文檔中改變這一行:

    <title>Message received clairaudiently by Mrs. Begg at Lake Pleasant, Fri. March 9, 1945.</title>

...(在通過XSLT轉換運行它之后):

<dc:title>Message received clairaudiently by Mrs. Begg at Lake Pleasant, Fri. March 9, 1945.</dc:title>

這是我在XSL文件中使用的樣式表元素:

    <xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xlink="http://:www.w3.org/1999/xlink" 
    xmlns:dc="http://purl.org/dc/elements/1.1/">

所以我的問題是,我是否必須將“ dc:”前綴硬編碼到XSL樣式表中的各個元素中,例如:

<dc:title><xsl:value-of select="title" /></dc:title>

還是有辦法讓XSL轉換自動將前綴添加到每個元素?

[I]有沒有辦法讓XSL轉換自動將前綴添加到每個元素?

如果要為所有元素加上前綴而沒有例外,則不必手動進行。 例如,如果您有一個輸入文件,例如:

輸入

<?xml version="1.0"?>
<root>
    <item/>
    <item/>
</root>

應用以下轉換。 樣式表除了在dc:為所有元素添加前綴之外,不會進行任何更改。

樣式表

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="http://purl.org/dc/elements/1.1/">

   <xsl:output method="xml" indent="yes"/>
   <xsl:strip-space elements="*"/>

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

   <xsl:template match="*">
       <xsl:element name="{concat('dc:',name())}">
           <xsl:apply-templates select="@*|node()"/>
       </xsl:element>
   </xsl:template>

</xsl:stylesheet>

產量

<?xml version="1.0" encoding="utf-8"?>
<dc:root xmlns:dc="http://purl.org/dc/elements/1.1/">
   <dc:item/>
   <dc:item/>
</dc:root>

請注意,無法確定是否可以將其集成到當前的樣式表中。 不幸的是,您沒有透露太多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM