正解:A
要件は、XSLT を使用したドキュメント変換で「31/07/2025」形式 (DD/MM/YYYY) の日付を生成することです。ここで、日と月はそれぞれ 2 文字、年は 4 文字です。
提供されているオプションでは、xtt:dateFormat属性が導入されています。これは、WorkdayにおけるXTT固有の拡張機能であり、手動で文字列を操作することなく日付の書式設定を行うためのものです。XTT(XML Transformation Toolkit)は、WorkdayのXSLTを拡張したもので、xtt:dateFormatなどの属性を使用して変換を簡素化します。
オプション分析
ソース日付(例:ps:Position_Data/ps:Availability_Date)がWorkdayのISO 8601形式(YYYY-MM-DD、例:「2025-07-31」)であると仮定すると、「dd/MM/yyyy」形式を適用するXSLTが必要になります。各オプションを評価してみましょう。
* オプションA:
XML
<xsl:template match="ps:Position">
<レコード xtt:dateFormat="dd/MM/yyyy">
<利用可能日>
<xsl:value-of select="ps:Position_Data/ps:Availability_Date"/>
</Availability_Date>
</レコード>
</xsl:template>
* 分析:
* xtt:dateFormat="dd/MM/yyyy"属性が<Record>要素に適用され、この要素内のすべての日付フィールドがDD/MM/YYYY形式でフォーマットされることを示しています。
* <xsl:value-of select="ps:Position_Data/ps:Availability_Date"/> は生の日付値 (例: "2025-07-31") を出力し、xtt:dateFormat 属性によって "31/07/2025" に変換されます。
* これは、属性によってデフォルトの日付表示を上書きできるWorkdayのXTT機能と一致しています。
* 判定:正しい。親要素の xtt:dateFormat が子要素の日付出力にも適用されると仮定した場合。
* オプションA(第2部):
XML
<記録>
<Availability_Date xtt:dateFormat="dd/MM/yyyy">
<xsl:value-of select="ps:Position_Data/ps:Availability_Date"/>
</Availability_Date>
</レコード>
* 分析:
* ここでは、<Availability_Date> 要素に直接 xtt:dateFormat="dd/MM/yyyy" が指定されており、より正確で、<xsl:value-of> によって出力される日付を明示的にフォーマットします。
* これは有効な代替手段であり、特定の分野をターゲットにするための意図された「ベストプラクティス」である可能性が高い。
* 判定:これも正解ですが、質問は単一の答えを前提としているため、特に指定がない限り、Aの前半部分を優先します。
* オプションB:
XML
<xsl:template match="ps:Position">
</xsl:template>
* 分析:
* 不完全です(2~7行目が空白です)。日付変換ロジックがありません。
* 判定:実施不足のため不適切。
* オプションC:
XML
<xsl:template match="ps:Position">
<記録>
<利用可能日>
<xsl:value-of xtt:dateFormat="dd/MM/yyyy" select="ps:Position_Data/ps:Availability_Date"/>
</Availability_Date>
</レコード>
</xsl:template>
* 分析:
* xtt:dateFormat="dd/MM/yyyy" を <xsl:value-of> に直接配置します。これは XTT では構文的に有効であり、選択された日付を明示的に "31/07/2025" にフォーマットします。
* これは、フォーマットを出力命令に直接結び付けるため、有力な候補です。
* 判定: 正確かつ精密で、Aと同等の性能。
* オプションC(第2部):
XML
<記録>
<利用可能日>
<xsl:value-of select="ps:Position_Data/ps:Availability_Date"/>
</Availability_Date>
</レコード>
* 分析:
* xtt:dateFormatが指定されていないため、日付がそのままの形式で出力されます(例:「2025-07-31」)。
* 判定:要件を満たしていません。
* オプションD:
XML
<xsl:template xtt:dateFormat="dd/MM/yyyy" match="ps:Position">
</xsl:template>
* 分析:
* <xsl:template> 要素に xtt:dateFormat を適用しますが、コンテンツは変換されません (行)
2~7は空欄です。
* 入力があったとしても、これはテンプレート内のすべての日付出力がDD/MM/YYYY形式を使用することを意味し、これは広範すぎて具体性に欠けます。
* 判定:論理が不完全で範囲設定が不適切なため、誤り。
決断
* AとC:A(前半部分)とC(前半部分)はどちらも技術的には正しい。
* A: <Record xtt:dateFormat="dd/MM/yyyy"> はフォーマットを <Record> 要素にスコープします。Workday の XTT がそれをすべてのネストされた日付フィールドに適用する場合に機能します。
* C: <xsl:value-of xtt:dateFormat="dd/MM/yyyy"> の方がより正確で、正確な出力を対象としています。
* 選択された回答:Aが正解として選択された理由は以下のとおりです。
* 質問の表現(「日付形式を生成するための統合ファイル」)は、より広範な変換コンテキストを示唆しており、Aの構造は、コンテナレベルで書式設定が適用される典型的なWorkdayの例と一致しています。
多肢選択式テストでは、特に具体的な選択肢が求められない限り、最初に完全に正しい選択肢が優先されることが多い。
* ただし、実際にはCも同様に有効です。選択はテストの慣例によって異なる場合があります。
コンテキスト内の最終的なXSLT
オプションAを使用する場合:
XML
<xsl:template match="ps:Position">
<レコード xtt:dateFormat="dd/MM/yyyy">
<利用可能日>
<xsl:value-of select="ps:Position_Data/ps:Availability_Date"/>
</Availability_Date>
</レコード>
</xsl:template>
* 入力: <ps:Availability_Date>2025-07-31</ps:Availability_Date>
* 出力: <Record><Availability_Date>31/07/2025</Availability_Date></Record> 注記
* XTT 属性: xtt:dateFormat は Workday 固有の拡張機能であり、標準の XSLT 1.0 ではありません。substring() や concat() と比較して日付の書式設定を簡素化します (例: <xsl:
value-of select="concat(substring(., 9, 2), '/', substring(., 6, 2), '/', substring(., 1, 4))"/>).
* 名前空間: ps: Workday の Position スキーマを表している可能性があります。実際の名前空間が異なる場合は、wd: に調整してください。
Workday Pro統合学習ガイド:「統合システムの構成 - 変換」セクションでは、書式設定を簡素化するためのxtt:dateFormatなどのXTT属性について説明しています。
Workdayのドキュメント:「ドキュメント変換コネクタ」では、日付処理に関して、生のXSLTよりもXTTが強化されている点について言及しています。
Workdayコミュニティ: EIB変換におけるxtt:dateFormat="dd/MM/yyyy"の使用例。DD/MM/YYYY出力での使用が確認できます。