特定の値の id
属性を持つ要素を選択する XPath は [@id='...']
と書きます。以下のようにすれば custom_field
を取り出すことができます。(取り出した項目の前後に不要な改行が入らないように normalize-space()
をかけています)
<xsl:value-of select="normalize-space(custom_fields/custom_field[@id='29'])"/>
0Like
Redmineから出力したxmlをcsvデータに落とすためのxslを作成中です。
custom_field以外の項目はすでに成功しています。custom_fieldのidをベタ書きしてcsv出力項目として設定したいのですが、うまくいきません。
for eachで出力する事例は検索して出てくるのですが、idが事前にわかっているので、id指定で項目を出力する書き方を教えてください。
よろしくお願いいたします。
###昨日XSLを触り始めたばかりの初学者ですので他にも間違いがあるかもしれません。
<?xml version="1.0" encoding="UTF-8"?>
<issues total_count="1" offset="0" limit="100" type="array">
<issue>
<start_date>2024-04-09</start_date>
<due_date>2024-04-15</due_date>
<custom_fields type="array">
<custom_field id="29" name="業務担当者">
<value>111</value>
</custom_field>
<custom_field id="14" name="プロセス">
<value>SSSS</value>
</custom_field>
<custom_field id="50" name="管理担当者">
<value>333</value>
</custom_field>
</custom_fields>
</issues>
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="Shift_JIS" indent="no" />
<xsl:template match="/">
<xsl:apply-templates select="issues" />
</xsl:template>
<xsl:template match="issue">
<xsl:value-of select="start_date"/>,<xsl:value-of select="due_date"/>,<xsl:value-of select="custom_field/id('29')"/>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
様々な記載方法を試してみた。
特定の値の id
属性を持つ要素を選択する XPath は [@id='...']
と書きます。以下のようにすれば custom_field
を取り出すことができます。(取り出した項目の前後に不要な改行が入らないように normalize-space()
をかけています)
<xsl:value-of select="normalize-space(custom_fields/custom_field[@id='29'])"/>
@Amn378
Questionerありがとうございます!
思っていたことが実現できました。
昨日仕事終了後も気になって仕方なかったので、本当に助かりました!
ありがとうございました。