1

オリジナル-これは私のオリジナルのXMLです:

<course acad_year="2012" cat_num="85749" offered="N" next_year_offered="2013">
  <term term_pattern_code="4" fall_term="Y" spring_term="Y">full year</term>
  <department code="VES">
    <dept_long_name>Department of Visual and Environmental Studies</dept_long_name>
    <dept_short_name>Visual and Environmental Studies</dept_short_name>
  </department>
</course>

望ましい結果-以下の例のように、すべての部門コードをグループ化して一覧表示する、元のXMLの別の短いバージョンを作成しようとしています。

   <departments>
      <department code="some_code" name="some_name"/>
      <department code="some_code" name="some_name"/>
      <department code="some_code" name="some_name"/>
   </departments>

これは私が試していることであり、機能していないことです。

   <xsl:template match="/">
       <departments>
          <xsl:for-each-group select="fas_courses/course" group-by="department[@code]">
            <xsl:text disable-output-escaping="yes"> <department code=" </xsl:text>
            <xsl:value-of select="department/@code"/>
            <xsl:text>" name="</xsl:text>
            <xsl:value-of select="dept_short_name"/>
            <xsl:text disable-output-escaping="yes">"><department/></xsl:text>
         </xsl:for-each-group> 
       </departments>
   </xsl:template>

Fが発生するエラー [Saxon-PE9.4.0.3]要素タイプ「department」に関連付けられた属性「code」の値に「<」文字を含めることはできません。

エラーメッセージから、「<」文字がxsl:text要素内にエラーを表示していることがわかりますが、その文字をどのように配置すればよいですか?すでにdisable-output-escaping="yes"を使用しています。他に何かありますか?ありがとう!

4

2 に答える 2

2

disable-output-escaping を使用することは決して良い考えではなく、ここでは本当に必要ありません。これを試して:

<xsl:template match="/">
  <departments>
    <xsl:for-each-group select="fas_courses/course" group-by="department/@code">
      <department code="{department/@code}" name="{department/dept_short_name}" />
    </xsl:for-each-group> 
  </departments>
</xsl:template>
于 2012-11-24T08:11:48.177 に答える
0

<[DATA[...]]> 内にテキストを記述する必要があるため、解析されたり、出力するタグに < および > を使用したりしません。

于 2012-11-24T01:36:32.850 に答える