2016-06-16 2 views
-2

私はこのように見ているXMLコードを持って:私が達成したい何テンプレートマッチには文字列またはテンプレートが含まれていますか?

<student_list> 
 
\t <student name ="Pete"> 
 
\t \t <text v ="3. Grade (relevant) skilled in Maths."/> 
 
\t \t <text v ="But often sleeps."/> 
 
\t </student> 
 
\t <student name =" Laura"> 
 
\t \t <text v ="Biology kid (relevant)."/> 
 
\t \t <text v =""/> 
 
\t </student> 
 
\t <student name="Audrey"> 
 
\t \t <text v ="Both inspired by Biology and Maths."/> 
 
\t </student> 
 
\t <student name="Mario"> 
 
\t \t <text v ="Both inspired by Biology and Maths (relevant)."/> 
 
\t </student> 
 
</student_list>

は次のとおりです。名前ですべての学生を抽出 が彼らの関連科目を区切って示しています。
「関連性」は、この子供の主題を表示する必要があるかどうかを示す指標です。該当する場合は文脈に表示され、そうでない場合は主題が表示されます。
最初の2つの科目(生物学と数学)を比較したいだけなので、1つの科目が不足していて文脈が関連していれば、もう1つの欠けている科目に熟練していないと言います。
出力はサブジェクトによってソートされる必要があります。 ピート:数学
ローラに熟練:数学で習熟していない
マリオ:数学
ピートに熟練:数学
ローラで習熟していない:生物学
マリオに熟練
コンクリートこれは、次の出力を生成する必要があります。生物学で勉強した

私はこれを達成するために誰かを助けることができますか? 私はすべての学生に一致すると、テキスト属性が特定の値が含まれていますが、それはかなりのJavaコーディングスタイルではなく、実際に手続きですので、私はこの確信しているかどうかを確認するためのテストのカップルを行うことを考えていたXSLT 1.0
を使用していますより速く、より簡単に行うことができます。しかし、私はそれを買う方法を知らない。

+0

はあなたにも、スクリプトを使用することができますか?これは純粋なxsltでは難しいでしょう。 – user1751825

+0

科目リスト(数学、生物学...)はどこから来ますか? –

+0

残念ながら、スクリプトは許可されていません。サブジェクトリストはxmlで実装されており、手動で拡張する必要があります。 – BlackACE

答えて

0

これは助けることができるかどうかを参照してください:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:my="http://www.example.com/my" 
exclude-result-prefixes="my"> 
<xsl:output method="text" encoding="utf-8"/> 

<my:subjects> 
    <subject>Math</subject> 
    <subject>Biology</subject> 
</my:subjects> 

<xsl:template match="/student_list"> 
    <xsl:variable name="students" select="student[contains(text/@v, 'relevant')]" /> 
    <xsl:for-each select="document('')/xsl:stylesheet/my:subjects/subject"> 
     <xsl:variable name="subject" select="." /> 
      <xsl:for-each select="$students"> 
       <xsl:value-of select="@name"/> 
       <xsl:text>: </xsl:text> 
       <xsl:choose> 
        <xsl:when test="text[contains(@v, $subject)]">Skilled in </xsl:when> 
        <xsl:otherwise>Not skilled in </xsl:otherwise> 
       </xsl:choose> 
       <xsl:value-of select="$subject"/> 
       <xsl:text>&#10;</xsl:text> 
      </xsl:for-each> 
    </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

結果

Pete: Skilled in Math 
Laura: Not skilled in Math 
Mario: Skilled in Math 
Pete: Not skilled in Biology 
Laura: Skilled in Biology 
Mario: Skilled in Biology 
+0

あなたの先生にアプローチをありがとうございました。残念ながら、すべてが "熟練していない.."に落ちているように見えますが、私はそれを把握すれば自分で修正しようとします。 – BlackACE

+0

これは私が得た結果ではありません(上記参照)。 –

+0

ああ、私はそれを完了し、それをXMLファイル全体に合わせるように変更しなければなりませんでした。再度、感謝します – BlackACE

関連する問題