回答編集履歴

2

XSLT 3.0

2020/07/13 14:47

投稿

OACleaner
OACleaner

スコア63

test CHANGED
@@ -57,3 +57,27 @@
57
57
 
58
58
 
59
59
  もしも列の数が多くなるようなら、列出力をどこか一カ所で制御したほうがよいでしょう。
60
+
61
+
62
+
63
+ なお、20 年以上も前のすり切れた規格である XSLT 1.0 ではなく、XSLT 3.0 を使ってもよいのなら、ほぼ 1 行で済みます:
64
+
65
+
66
+
67
+ ```xml
68
+
69
+ <?xml version="1.0" encoding="UTF-8"?>
70
+
71
+ <xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
72
+
73
+ <xsl:output method="text" />
74
+
75
+ <xsl:template match="/">
76
+
77
+ <xsl:text expand-text="yes">{postcode/city/town ! (((parent::city, .) ! @name, .) => string-join(' ')) => string-join('&#x0A;')}&#x0A;</xsl:text>
78
+
79
+ </xsl:template>
80
+
81
+ </xsl:stylesheet>
82
+
83
+ ```

1

some backticks

2020/07/13 14:47

投稿

OACleaner
OACleaner

スコア63

test CHANGED
@@ -1,4 +1,4 @@
1
- XSLT で xsl:for-each を使った時点で、多くの場合、変なことをやってしまっていると考えたほうがよいと思います。
1
+ XSLT で `xsl:for-each` を使った時点で、多くの場合、変なことをやってしまっていると考えたほうがよいと思います。
2
2
 
3
3
 
4
4
 
@@ -6,9 +6,9 @@
6
6
 
7
7
 
8
8
 
9
- 0. 各 town が行になるようなので、ドキュメント ノードから各 town にテンプレートを適用する。
9
+ 0. 各 `town` が行になるようなので、ドキュメント ノードから各 `town` にテンプレートを適用する。
10
10
 
11
- 0. town のテンプレートでは、各列の間にスペースを入れて、行を出す。
11
+ 0. `town` のテンプレートでは、各列の間にスペースを入れて、行を出す。
12
12
 
13
13
 
14
14