0

XSLTを使用してXMLの単純な変換を実行してHTMLを生成しようとしていますが、問題が発生していて、問題が何であるかを理解できないようです。これが私が扱っているXMLのサンプルです:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="C:\Users\cgubata\Documents\Digital Measures\jcamp_fac_ex_xslt.xsl"?>
<Data xmlns="http://www.digitalmeasures.com/schema/data" xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata" dmd:date="2012-02-27">
<Record userId="310106" username="jcamp" termId="453" dmd:surveyId="1154523">
    <dmd:IndexEntry indexKey="COLLEGE" entryKey="School of Business" text="School of Business"/>
    <dmd:IndexEntry indexKey="DEPARTMENT" entryKey="Accountancy" text="Accountancy"/>
    <dmd:IndexEntry indexKey="DEPARTMENT" entryKey="MBA" text="MBA"/>
    <PCI id="11454808064" dmd:lastModified="2012-02-08T13:17:39">
        <PREFIX>Dr.</PREFIX>
        <FNAME>Julia</FNAME>
        <PFNAME/>
        <MNAME>M.</MNAME>
        <LNAME>Camp</LNAME>
        <SUFFIX/>
        <ALT_NAME>Julia M. Brennan</ALT_NAME>
        <ENDPOS/>

私がやりたいのは、いくつかのノードの値をHTMLで表示することだけです。したがって、たとえば、PREFIC、FNAME、LNAMEノードを「Dr.Julia Camp」として表示したい場合があります(引用符なし-後でスタイリングします)。これが私が使用しているXSLです:

<?xml version="1.0" encoding="utf-8"?><!-- DWXMLSource="jcamp_fac_ex.xml" -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata"> 
<xsl:output method="html" encoding="utf-8"/>
<xsl:template match="/">

<xsl:value-of select="/Data/Record/PCI/PREFIX"/>

</xsl:template>
</xsl:stylesheet>

私が調査していたことから、それはそのPREFIXフィールドの値を示すはずです。ただし、代わりに、すべてのノードからすべての値を出力しています(したがって、テキスト値を持つノードが4000ある場合、HTMLで4000の値が返されます)。私の目標は、特定のノードから値を引き出すことであり、おそらくそれらをテーブルに配置します。

特定のノードから値を引き出すにはどうすればよいですか?前もって感謝します。

4

2 に答える 2

1

さて、あなたの症状を再現することはできません。あなたが投稿したものをテストすると、何も出力されません。xpathが間違った名前空間をテストしているため、これは正しいように見えます。xsltに名前空間の名前空間とプレフィックスのマッピングを追加し、http://www.digitalmeasures.com/schema/dataそれをvalue-ofxpathで使用する必要があります。このような:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata"
  xmlns:dm="http://www.digitalmeasures.com/schema/data">
    <xsl:output method="html" encoding="utf-8"/>
    <xsl:template match="/">
        <xsl:value-of select="/dm:Data/dm:Record/dm:PCI/dm:PREFIX"/>
    </xsl:template>
</xsl:stylesheet>
于 2012-05-24T20:51:18.780 に答える
1

あなたは初心者にとって一番のXSLTトラップに陥ったのではないかと思います。この質問は、このフォーラムで少なくとも1日1回見られます。要素は名前空間にあり、スタイルシートは名前空間のないノードと一致しようとしています。

于 2012-05-24T22:46:13.683 に答える