0

データベースからエクスポートされた xml 出力の xsl を作成する必要があります。xml の名前タグには接頭辞 bib の後にコロンが続き (bib: のように)、xml で定義されています。しかし、bib: が宣言されていないという xsl コンパイラ エラーがまだ発生します。そこで、xsl で宣言を追加しました。今回はエラーは消えましたが、結果はゼロになり、正しいパスを確認しました。また、宣言後に xsl の「bib:」プレフィックスを除外しようとしましたが、同じゼロの結果が得られました。私は xsl を初めて使用するので、ここで何が問題なのかわかりません。これらは私のファイルです。どうもありがとう。

XML:

<?xml version="1.0" encoding="UTF-8"?>
<embasexmllist>
<cards items="1">
  <bib:card items="0" xmlns:bib="http://elsevier.co.uk/namespaces/2001/bibliotek">-         
    <bib:cardfields>
      <bib:Fulltext>
        <bib:DOI>10.1371/journal.pone.0068303</bib:DOI>
      </bib:Fulltext>
      <bib:Title>Mesothelin Virus-Like Particle Immunization Controls Pancreatic Cancer Growth through CD8+ T Cell Induction and Reduction in the Frequency of CD4+foxp3+ICOS- Regulatory T Cells
      </bib:Title>
    </bib:cardfields>
  </bib:card>
</cards>
</embasexmllist>

XSL

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:bib="http://www.bib.com/xml">


  <xsl:output indent="yes" omit-xml-declaration="no"
       media-type="application/xml" encoding="UTF-8" />


  <xsl:template match="/">
    <searchresult>
      <xsl:apply-templates 
        select="/embasexmllist/cards/bib:card/bib:cardfields" />
    </searchresult>
  </xsl:template>

  <xsl:template match="bib:cardfields">
    <document>
      <title><xsl:value-of select="bib:Title" /></title>
      <snippet>
        <xsl:value-of select="bib:Title" />
      </snippet>
      <url>
        <xsl:variable name="doi" select="bib:Fulltext/bib:DOI"/>
        <xsl:value-of 
          select="concat('http://dx.doi.org/', $doi)" />
      </url>
    </document>
  </xsl:template>
</xsl:stylesheet>
4

1 に答える 1

1

プレフィックスは、XML 要素の名前空間を定義します。

スタイルシートが機能するには、名前空間の宣言が入力 XML の宣言と一致する必要があります。交換

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:bib="http://www.bib.com/xml">

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:bib="http://elsevier.co.uk/namespaces/2001/bibliotek">

これにより、次の出力 XML が生成されます。

<?xml version="1.0" encoding="utf-8"?>
<searchresult xmlns:bib="http://elsevier.co.uk/namespaces/2001/bibliotek">
  <document>
    <title>
          Mesothelin Virus-Like Particle Immunization Controls Pancreatic Cancer Growth through CD8+ T Cell Induction and Reduction in the Frequency of CD4+foxp3+ICOS- Regulatory T Cells
        </title>
    <snippet>
      Mesothelin Virus-Like Particle Immunization Controls Pancreatic Cancer Growth through CD8+ T Cell Induction and Reduction in the Frequency of CD4+foxp3+ICOS- Regulatory T Cells
        </snippet>
    <url>http://dx.doi.org/10.1371/journal.pone.0068303</url>
  </document>
</searchresult>
于 2013-08-13T20:53:36.833 に答える