2013-04-15 59 views
0

我很新的XSLT,並試圖給定的XML文件轉換成另一種。XSLT:XML-XML(在轉換文件中沒有XML標籤)

原始文件的結構如下:

<metadataContainerType xmlns:ns2="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:ns3="http://textgrid.info/namespaces/metadata/core/2010"> 
<ns3:object> 
    <ns3:generic> 
     <ns3:provided> 
      <ns3:title>Tfghfv</ns3:title> 
      <ns3:identifier type="METSXMLID">T0072-00213-THUMB</ns3:identifier> 
      <ns3:format>image/jpeg</ns3:format> 
     </ns3:provided> 
     <ns3:generated> 
       <ns3:created>2012-11-07T11:30:20.085+01:00</ns3:created> 
       <ns3:lastModified>2012-11-07T11:30:20.085+01:00</ns3:lastModified> 
       <ns3:issued>2012-11-07T11:30:20.085+01:00</ns3:issued> 
       <ns3:revision>0</ns3:revision> 
       <ns3:extent>7055</ns3:extent> 
       <ns3:project id="TGPR-1e31ce14-d7d9-3023-e8c9-501a7552a1f2">St. Matthias Test 07</ns3:project> 

     </ns3:generated> 
    </ns3:generic> 
</ns3:object> 
</metadataContainerType> 

,我希望把它改造成形式:

<add><doc> 
    <field name="id">455HHS-2232</field> 
    <field name="title">T0072-00031-DOWNLOAD - Blatt 12v</field> 
    <field name="format">application/pdf</field> 
    <field name="created">2012-11-07T11:15:19.887Z</field> 
    <field name="last_modified">2012-11-07T11:15:19.887Z</field> 
    <field name="issued">2012-11-07T11:15:19.887Z</field> 
</doc></add> 

但是,當我轉換的文件我錯過了XML標籤,它只是顯示節點的內容。 也許有人可以幫助我。

我的XSLT的快照看起來是這樣的:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:ns2="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ns3="http://textgrid.info/namespaces/metadata/core/2010"> 
<xsl:output method="xml" indent="yes" encoding="UTF-8"/> 
<xsl:template match="/ns3:object"> 
    <add><doc> 

     <!-- the provided metadata fields --> 
     <field name="title"> 
      <xsl:apply-templates select="ns3:generic/ns3:provided/ns3:title"/> 
     </field> 

     <field name="identifier_type"> 
      <xsl:value-of select="ns3:generic/ns3:provided/ns3:identifier_type"/> 
     </field> 


     <xsl:element name="field"> 
      <xsl:value-of select="ns3:generic/ns3:provided/ns3:format"/> 
     </xsl:element> 
    ... 
    </doc></add> 
</xsl:template> 
</xsl:stylesheet> 

回答

0

你的模板相匹配/ns3:object。這意味着匹配一個ns3:object元素,它是根節點的子元素。由於在源XML的ns3:object元素是metadataContainerType一個孩子,不是根節點,您的模板應該簡單地匹配ns3:object(不帶斜線)。

+0

真是個愚蠢的錯誤,非常感謝你。 但我來到另一個問題。 我不得不在xsl添加:stylesheet標記 「的xmlns:NS2 =」 http://www.w3.org/1999/02/22-rdf-syntax-ns# 「的xmlns:NS3 =」 HTTP:// textgrid.info/namespaces/metadata/core/2010" 。 當我transalte這部分被添加到XML文件‘添加’和-tag它看起來像這樣:‘<添加的xmlns:ns2的=’HTTP:// www.w3.org/1999/02/22-rdf-syntax-ns# 「的xmlns:NS3 = 」http://textgrid.info/namespaces/metadata/core/2010「>」 但我不能用這個信息的標籤用於下一步 – Sentient6

+0

這似乎是一個無關緊要的問題,請提出一個新問題。 – nwellnhof