質問編集履歴

3

誤字訂正

2020/04/13 08:52

投稿

UG_ito_Pcorp
UG_ito_Pcorp

スコア13

test CHANGED
File without changes
test CHANGED
@@ -338,9 +338,9 @@
338
338
 
339
339
  <title>一</title>
340
340
 
341
- <p>わたくしは猫である。</p>
341
+ <p>わたくしは猫である。</p>
342
-
342
+
343
- <p>吾輩は犬である。</p>
343
+ <p>吾輩はである。</p>
344
344
 
345
345
  <p>吾輩は猫である。</p>
346
346
 
@@ -362,11 +362,11 @@
362
362
 
363
363
  <p>何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。</p>
364
364
 
365
- <p>わたくしはここで始めて人間というものを見た。</p>
365
+ <p>わたくしはここで始めて人間というものを見た。</p>
366
366
 
367
367
  <p>吾輩はここで始めて人間というものを見た。</p>
368
368
 
369
- <p>吾輩はここで始めて民間人というものを見た。</p>
369
+ <p>吾輩はここで始めて民間人というものを見た。</p>
370
370
 
371
371
  </section>
372
372
 

2

誤字訂正

2020/04/13 08:52

投稿

UG_ito_Pcorp
UG_ito_Pcorp

スコア13

test CHANGED
File without changes
test CHANGED
@@ -234,7 +234,7 @@
234
234
 
235
235
 
236
236
 
237
- 次のXSLTで変換をしてみたのですが、処理が1つのmuch=""に対して、外部ファイル内で行われるeach-for分繰り返されてしまい、残念な結果しか得られませんでした。
237
+ 次のXSLTで変換をしてみたのですが、1つのmuch=""に対して、外部ファイル内のfor-each分、処理が繰り返されてしまい、残念な結果しか得られませんでした。
238
238
 
239
239
 
240
240
 

1

replace.xslの<choose>文内にある変換先を指しているつもりの「./text()」をあらかじめ<p>のテキストを格納した変数としました。それでも未解決です。

2020/04/13 08:46

投稿

UG_ito_Pcorp
UG_ito_Pcorp

スコア13

test CHANGED
File without changes
test CHANGED
@@ -234,7 +234,7 @@
234
234
 
235
235
 
236
236
 
237
- 次のXSLTで変換をしてみたのですが、処理が外部ファイル内で行われ、残念な結果しか得られませんでした。
237
+ 次のXSLTで変換をしてみたのですが、処理が1つのmuch=""に対して、外部ファイル内で行われるeach-for分繰り返されてしまい、残念な結果しか得られませんでした。
238
238
 
239
239
 
240
240
 
@@ -262,6 +262,12 @@
262
262
 
263
263
  <xsl:template match="p">
264
264
 
265
+
266
+
267
+     <xsl:variable name="current_text" select="."/>
268
+
269
+
270
+
265
271
  <xsl:for-each select="$tarm_list//para">
266
272
 
267
273
 
@@ -274,17 +280,17 @@
274
280
 
275
281
  <xsl:choose>
276
282
 
277
- <xsl:when test="contains(./text(),$target_tarm)">
283
+ <xsl:when test="contains($current_text,$target_tarm)">
278
284
 
279
285
  <xsl:variable name="non_change_before">
280
286
 
281
- <xsl:value-of select="substring-before(./text(),$target_tarm)"/>
287
+ <xsl:value-of select="substring-before($current_text,$target_tarm)"/>
282
288
 
283
289
  </xsl:variable>
284
290
 
285
291
  <xsl:variable name="non_change_after">
286
292
 
287
- <xsl:value-of select="substring-after(./text(),$target_tarm)"/>
293
+ <xsl:value-of select="substring-after($current_text,$target_tarm)"/>
288
294
 
289
295
  </xsl:variable>
290
296
 
@@ -294,7 +300,11 @@
294
300
 
295
301
  <xsl:otherwise>
296
302
 
303
+ <p>
304
+
297
- <xsl:copy-of select="current()"/>
305
+ <xsl:value-of select="$current_text"/>
306
+
307
+ </p>
298
308
 
299
309
  </xsl:otherwise>
300
310
 
@@ -328,37 +338,35 @@
328
338
 
329
339
  <title>一</title>
330
340
 
331
- <para>
332
-
333
- <sequence>00001</sequence>
334
-
335
- <target>吾輩</target>
336
-
337
- <replace>わたくし</replace>
341
+ <p>わたくしは猫である。</p>
338
-
339
- </para>
342
+
340
-
341
- <para>
342
-
343
- <sequence>00002</sequence>
343
+ <p>吾輩は犬である。</p>
344
-
344
+
345
- <target>猫</target>
345
+ <p>吾輩はである。</p>
346
-
346
+
347
- <replace></replace>
347
+ <p>名前はまだ無い。</p>
348
-
349
- </para>
348
+
350
-
351
- <para>
352
-
353
- <sequence>00003</sequence>
354
-
355
- <target>人間</target>
349
+ <p>名前はまだ無い。</p>
356
-
350
+
357
- <replace>民間人</replace>
351
+ <p>名前はまだ無い。</p>
358
-
352
+
359
- </para>
353
+ <p>どこで生れたかとんと見当がつかぬ。</p>
360
-
354
+
361
- (以下、上記3の<para>を4回(全部で5回)繰り返し)
355
+ <p>どこで生れたかとんと見当がかぬ。</p>
356
+
357
+ <p>どこで生れたかとんと見当がつかぬ。</p>
358
+
359
+ <p>何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。</p>
360
+
361
+ <p>何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。</p>
362
+
363
+ <p>何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。</p>
364
+
365
+ <p>わたくしはここで始めて人間というものを見た。</p>
366
+
367
+ <p>吾輩はここで始めて人間というものを見た。</p>
368
+
369
+ <p>吾輩はここで始めて民間人というものを見た。</p>
362
370
 
363
371
  </section>
364
372
 
@@ -370,6 +378,8 @@
370
378
 
371
379
 
372
380
 
373
- 外部ファイルのリスト項目を1つづつ照らし合わせながら、変換元ファイル(test.xml)を処理させるには、どうすればよろしいでしょうか。
381
+ 外部ファイルのリスト項目を1つづつ照らし合わせながら、変換元ファイル(test.xml)を処理させるには、どうすればよろしいでしょうか。XSLTの誤りをご指摘いただけると助かります。
382
+
383
+ 根本的に上記の方法ではNGな場合、別途の方法をご紹介いただけるとなお幸いです。
374
384
 
375
385
  よろしくご教授のほど、お願いいたします。