• 締切済み

XMLでの改行について

XMLでの改行について ASPにてXMLを作成し、XSL(FO)にて帳票形式を作成し、TomcatにてPDFを作成しています。 ASP側にて、  Set objXmlNode = objXmlDoc.CreateElement("CV0")  Set objXmlText = objXmlDoc.createTextNode("文字" & vbCrLf & "文字" & vbCrLf& "文字")   objXmlNode.appendChild(objXmlText)  objTrNode.appendChild objXmlNode のようにXMLを作成し、XSL(FO)には、 <xsl:template match="CV0"> <fo:table-cell border-width="0.5mm" border-style="solid" padding="1mm" height="30mm"> <fo:block font-size="12pt" font-family="MSMincho" text-align="center"> <xsl:value-of select='.'/> </fo:block> </fo:table-cell> </xsl:template> のように表記しておりますが、帳票を見ると、 「文字 文字 文字」 になるはずが、 「文字 文字文字」 となってしまいます。 原因として何が考えられるのでしょうか? 回答のほど、よろしくお願いします。

  • XML
  • 回答数1
  • ありがとう数33

みんなの回答

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

><xsl:template match="CV0"> これは何として出力しようとしているんですかね。XML ?HTNL ? PDF? 見るとHTMLに見えるのですが、どうなんでしょう。それによっても違いますが、XMLで改行マークを効かせる場合は、おまじないのヘッダーを書かないとだめですよね? その辺が記載されていないので分かりません。 もちろんHTMLでは改行は無視されますね。一つの文字として認識されるだけです。 予測ですがHTMLとして出力して、それをPDFのCOMかコマンドかに渡して印刷しているのかな? HTMLだったら単純に<BR>を入れればいいし、vbCrLf=<BR>  現象だけ見ると改行マークで2段になっているのではなく、表示幅が狭いので2段になったような気がします。それだと説明付きますよね。つまり改行マークは全く効いていない。ということになりますね。

関連するQ&A

  • XMLをxalanでXSL-FOに変換する

    book.xmlとbook.xslでbook.foに変換にxalanで実行しました。 >java org.apache.xalan.xslt.Process -in book.xml -xsl book.xsl -out book.fo ところが、以下のようにエラーが出ました。 Exception in thread "main" java.lang.ClassCastException: org.apache.xalan.res.XSLTErrorResources_ja at org.apache.xalan.xslt.Process.main(Process.java:209) 何が原因なのでしょうか?xalan-j_2_4_1のxalan.jarとxercesImpl.jarにはCLASSPATH設定をしています。 <book.xml> <?xml version="1.0" encoding="Shift_JIS" ?> <?xml:stylesheet type="text/xsl" href="book.xsl" ?> <書籍管理> <書籍情報 ID="1"> <書籍名>スタイルシート辞典 第2版</書籍名> <著者>安川英明</著者> <出版社>翔泳社</出版社> <価格>1800</価格> </書籍情報> ・・・ <書籍管理> 文字数が多くなってすべてbook.xslがかけませんでした。 テーブル形式で表示するようしたいのです。 <xsl:template match="書籍管理"><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> ・・・ <fo:table> <fo:table-column column-width="50mm"/> ・・・ <fo:table-body><fo:table-row><fo:table-cell><fo:block>書籍名</fo:block></fo:table-cell>・・・</fo:table-row> <xsl:apply-templates/> </fo:table-body> </fo:table> </fo:flow></fo:page-sequence> </fo:root></xsl:template> <xsl:template match="書籍情報"> <fo:table-row><xsl:apply-templates/></fo:table-row> </xsl:template> <xsl:template match="書籍名"> <fo:table-cell><fo:block><xsl:value-of select='.'/></fo:block></fo:table-cell> </xsl:template>

    • ベストアンサー
    • XML
  • XSL内でJavaScriptを記述し、JavaScript内でXMLデータを取得するには・・・

    大変困っていますのでよろしくお願いします。 XSLのファイル内でJavaScriptを記述し、JavaScriptでxmlの要素を取得操作したいのですが、とり方がわかりません。 ご教授のほどをよろしくお願いします。 ================================================================== sample.xsl ------------------------------------------------------------------ <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>XML: 基本サンプル</title> </head> <body> <p align="center">サンプル</p> <xsl:apply-templates select="information/value/applicationinfo" /> </body> </html> </xsl:template> <xsl:template match="value/applicationinfo"> <Script Language = "JavaScript"> <xsl:comment> <![CDATA[ document.write("<xsl:value-of select=\"componentname\" />"); ]]> </xsl:comment> </Script> <table border="1"> <tr> <td><xsl:value-of select="componentname" /></td> </tr> </table> </xsl:template> </xsl:stylesheet> ================================================================== 下のテーブルでは要素を表示することはできます。 このやり方では駄目なのでしょうか?

    • ベストアンサー
    • XML
  • XMLデータを動的に使用する

    XML初心者です。 お恥ずかしながらかなり幼稚な質問かもしれませんが宜しくお願いします。 XMLファイルがひとつあります。 ----ファイルの中身---- <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="相対パス/fff.xsl"?> <rss version="2.0"> <channel> <item> <title>お中元の季節になりました。</title> <link>https://XXXX/XXXXX</link> <pubDate>2007/07/05</pubDate> <description>お中元の季節になりました。デパートが賑わいをみせています。</description> <category>浅目新聞</category> </item> <item> <title>今年は平年並みの暑さ</title> <link>https://XXXX/XXXXX</link> <pubDate>2007/07/05</pubDate> <description>気象庁が今年は平年並みの暑さになると発表しました。</description> <category>毎回新聞</category> </item> </channel> </rss> XSLファイルがあります。 ----ファイルの中身---- <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>新聞情報表示テスト</title> </head> <body> <p align="center">表示テスト</p> <xsl:apply-templates /> </body> </html> </xsl:template> <xsl:template match="item"> <table border="0" width="500" align="center"> <xsl:if test="title='お中元の季節になりました。'"> <tr> <td colspan="2">URL: <xsl:value-of select="link" /></td> </tr> </xsl:if> </table> </xsl:template> </xsl:stylesheet> このXSLファイルについて、"お中元"の部分を動的に変えたいのですが、可能でしょうか? できればjavascriptは使いたくありません。(javascriptを無効にしているユーザーがいるため) インプットボックスが用意してあり、そこにユーザーが"今年は平年並みの暑さ"と入力すれば、そちらのlinkを引っ張ってきたいのです。 かなり抽象的な質問になってしまい、みなさんに意図を汲み取って頂かなければなりませんが、困っていますので宜しくお願いします。

    • ベストアンサー
    • XML
  • IEのmsxmlでxmlをcsvに変換

    現在IEにくっついているmsxmlでxmlファイルをcsvに変換させるxslを作成しています。 msxmlでもmsxml3でも動くようなxslファイルを作成したいので ワーキングドラフト仕様のxslの記述を使用しようと思い下記のようなXMLとxslを作成しました <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="CSV.XSL"?> <root> <data> <record> <aaaa>1234</aaaa> <bbbb>5678</bbbb> <cccc>9abc</cccc> <dummy name="ENDRECORD"></dummy> </record> <record> <aaaa>1122</aaaa> <bbbb>3344</bbbb> <cccc>5566</cccc> <dummy name="ENDRECORD"></dummy> </record> </data> </root> xslのposition()が使えないので xmlに <dummy name="ENDRECORD"></dummy> を追加して xslで一件分のデータの終わりを認識させています -csv.xsl- <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" version="1.0"> <xsl:template match="/"> <xsl:apply-templates select="root/data/record"/> </xsl:template> <xsl:template match="root/data/record"> <xsl:for-each select="*"> <xsl:choose> <xsl:when test="./@name[(.='ENDRECORD')]">&#xA;</xsl:when> <xsl:otherwise><xsl:value-of select="."/>,</xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> </xsl:stylesheet> しかし、csvのカンマ編集が以下のようになってしまいます。 1234,5678,9abc, ←最後にカンマが残ってしまう 1122,3344,5566, どなたかワーキングドラフト仕様でも勧告後の仕様でも動くような、csvに変換するxslを作成された方はいませんでしょうか。

    • ベストアンサー
    • XML
  • XSLTでの複数のXML検索結果を統合するには?

    初歩的な質問でごめんなさい。 XSLTを使って複数のXMLを検索した結果を、表示したいのですが、結果を1つのテーブルに統合するにはどうすればいいのでしょう。 次のスクリプトを基に作りたいのですが。 function search (keyword) { node = thexsl.XMLDocument.selectSingleNode("//xsl:for-each"); if(keyword) node.setAttribute("select", "//data[contains(word, '" + keyword + "')]"); else node.setAttribute("select", "//data"); str = thexml.XMLDocument.transformNode(thexsl.XMLDocument); view1.innerHTML = str; } 次のファイルを利用して検索したいです、 <xml id="thexml1" src="db1.xml"></xml> <xml id="thexml2" src="db2.xml"></xml> <xml id="thexml3" src="db3.xml"></xml> <xml id="thexsl" src="db.xsl"></xml> xmlファイルの内容 <?xml version="1.0" encoding="utf-8" ?> <dataroot xml:lang="ja"> <data>・・・</data>  ・・・ </dataroot> xslファイルの内容 <?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <table> <tr>・・・</tr> <xsl:for-each select="//data"> <tr>・・・</tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> よろしくお願いします。

    • 締切済み
    • XML
  • VBSでXMLを操作したい

    現在Webアプリケーションの簡単なものを作成しています。 データベースはXMLで出来上がっているのでそれを使いたいのですが、入力フォームに入れてもらったデータをXMLに変換してXMLデータベースに追加、保存しようと思います。 一応フォームに入力したものをXMLデータとして出力までは考えられたのですが、既存のXMLを読み出す方法と追加する方法、保存する方法がよくわかりません。 よろしくお願いいたします。 <html> <head> <title>入力フォーム</title> <script type="text/vbscript"> <!-- Option Explicit dim xmldoc Sub window_onload() set xmldoc=createObject("MSXML2.DOMDocument") xmldoc.async=False xmldoc.loadXML("<?xml version='1.0'?><全体/>") End Sub Sub makeXml() dim myInfoElement,myDataElement,myDataText dim ret1,ret2,ret3,ret4 set ret1=xmldoc.createTextNode(vbCRLf) xmldoc.documentElement.appendChild(ret1) set myInfoElement=xmldoc.createElement("名簿") set ret2=xmldoc.createTextNode(vbCRLf) myInfoElement.appendChild(ret2) set myDataElement=xmldoc.createElement("名前") set myDataText=xmldoc.createTextNode(myForm.myName.value) myDataElement.SetAttribute "年",myForm.myAge.Value myDataElement.appendChild(myDataText) myInfoElement.appendChild(myDataElement) set ret3=xmldoc.createTextNode(vbCRLf) myInfoElement.appendChild(ret3) xmldoc.documentElement.appendChild(myInfoElement) set ret4=xmldoc.createTextNode(vbCRLf) xmldoc.documentElement.appendChild(ret4) myForm.xmlSource.value=xmldoc.xml End Sub --> </script> </head> <body> <form name="myForm"> 名前:<input type="text" size="30" name="myName"><br> 年:<input type="text" size="10" name="myAge"> <button onClick="makeXml()">XMLの作成</button><br> <textarea name="xmlSource" cols="60" rows="15"></textarea> </form> </body> </html>

  • xml+xslでの変換内容をtextareaへ

    お世話になります。 xml+xslでhtmlに変換する際、その変換内容をtextareaにも表示させるようにしたいのです。 使用ブラウザ:FireFox。現状はFirebugでDOMツリーを手動で参照してる状況です。 現在は、ノードをtextareaに表示しようとすると[object DocumentFragment]とだけ出てしまい、DocumentFragmentという概念あることは分かり、色々調べcreateElement()やcreateTextNode()など、その他思いつく限りの事でテストしてみてるのですが、どうにもノードをHTMLタグとしてtextareaに表示させる事が出来ません。 以下にポイントとなるソースを掲示しますので、どなた様か、お助け願えませんでしょうか --test.html---- <html><head> <meta content="text/html; charset=utf8" http-equiv="content-type"> <title>JS+xslt</title> <script type="text/javascript"> function tramsformlists(xmlFile, xslFile, resultNodeID){ var xml, xslt, newDoc; if(document.all){ xml = new ActiveXObject("Microsoft.XMLDOM"); xslt = new ActiveXObject("Microsoft.XMLDOM"); }else { xml = document.implementation.createDocument("", "", null); xslt = document.implementation.createDocument("", "", null); } xml.async = false; xslt.async = false; xml.load(xmlFile); xslt.load(xslFile); if(document.all){ document.getElementById(resultNodeID).innerHTML = xml.transformNode(xslt); }else { var xsltp = new XSLTProcessor(); xsltp.importStylesheet(xslt); newDoc = xsltp.transformToFragment(xml, window.document); var df = document.createDocumentFragment(); cloneDoc= newDoc.cloneNode(true); document.getElementById("Div"+resultNodeID).innerHTML = ""; document.getElementById("Div"+resultNodeID).appendChild(newDoc); t = document.msg_form.TextareaTest.value; document.msg_form.TextareaTest.value =t + df.appendChild(cloneDoc); } } </script> </head><body> <form name="msg_form"> <ul> <li> <input type="button" value="Menu" onclick="tramsformlists('test0.xml','test0.xsl','Test')"><br> <div id="DivTest"></div> <textarea cols="50" rows="10" id="TextareaTest">あああああああ</textarea> </li> </ul> </form> </body></html> --test0.xml-- <?xml version="1.0" encoding="utf-8"?> <root> <nolink_logo> </nolink_logo> </root> --test0.xsl-- <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8"/> <xsl:template match="root"> <xsl:apply-templates select="nolink_logo"/> </xsl:template> <xsl:template match="nolink_logo"> <xsl:call-template name="Test" /> </xsl:template> <xsl:template name="Test"> <xsl:variable name="menu" select="document('test1.xml')/root"/> <div>画像を表示 <xsl:for-each select="$menu"> <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="url[1]"/> </xsl:attribute> <xsl:attribute name="target">_blank</xsl:attribute> <xsl:element name="img"> <xsl:attribute name="src"> <xsl:value-of select="img[1]"/> </xsl:attribute> </xsl:element> </xsl:element> </xsl:for-each> </div> </xsl:template> </xsl:stylesheet> --test1.xml-- <?xml version="1.0" encoding="utf-8"?> <root> <img>http://domain/image2.gif</img> <url>http://domain/test.html</url> </root>

  • xmlから吐き出したhtmlデータのソースインデントがきかない

    xmlとxsltを使って、htmlを吐き出しているのですが、 <xsl:output indent="yes"/> indent="yes"を入れてもindentされません。 xsltは下記になります。 <?xml version="1.0" encoding="shift_jis"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="id" /> <xsl:output method="xml" standalone="yes" encoding="Shift_JIS" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" indent="yes" /> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>KDS</title> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <link rel="stylesheet" href="/css/style.css" type="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <script type="text/javascript" src="/js/snavi_case.js"><xsl:comment>//</xsl:comment></script> </head> <body> <xsl:apply-templates select="info/group/page[@fileId='pteach' and @fileId = $id]" mode="main"/> </body> </html> </xsl:template> <xsl:template match="info/group/page" mode="main"> <xsl:value-of select="title"/> <table width="539" border="1"> <xsl:apply-templates select="teacher[position() mod 3 = 1]"/> </table> </xsl:template> <xsl:template match="teacher"> <tr> <td><xsl:value-of select="name"/>:<xsl:value-of select="subject"/></td> <td><xsl:value-of select="following-sibling::teacher[1]/name"/>:<xsl:value-of select="following-sibling::teacher[1]/subject"/></td> <td><xsl:value-of select="following-sibling::teacher[2]/name"/>:<xsl:value-of select="following-sibling::teacher[2]/subject"/></td> </tr> </xsl:template> </xsl:stylesheet> ただ、<html>~<body>と</body>~</html>はしっかりとソースがインデントされるのですが、<xsl:apply-templates select="info/group/page[@fileId='pteach' and @fileId = $id]" mode="main"/>で読み込んだところ以降のindentが全くきいていないようです。 こんな感じになります。 <html> <title></title> <body>#ここまではindentは正常 <table><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr><tr><td></td></tr></table> #indentが効いていない! </body> </html> どなたか同じような状況になられた方、 いらっしゃいませんでしょうか。

    • ベストアンサー
    • XML
  • 複数リンクをしたいのですが表示されない

    複数リンクしたいページがあったので色々試みました こちらのサイトを参考にして http://www6.airnet.ne.jp/manyo/xml/index.html Xlinkの単純リンク・拡張リンクを試したのですがリンクが全くされないで、普通に文字が並んでるように表示されました また http://questionbox.jp.msn.com/qa1821124.html こちらのやり方で試みてもリンクされていない状態でした。 XMLの書き方がまずかったのか、別の理由でリンク表示されないのかわかりませんがどうしたら複数リンクができるでしょうか? 大体こんな感じに書きました ↓XML <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="anime1.xsl"?> <iti> <sait> <name>世界の発展</name> <gai> <link url="http://***">イギリス</link> <link url="http://***">フランス</link> <link url="http://***">イタリア</link> </gai> </sait> ↓XSL <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>テスト</title> </head> <body> <div align="center"> <xsl:apply-templates select="iti" /> </div> </body> </html> </xsl:template> <xsl:template match="iti"> <br /> <br /> <h1>テスト</h1> <xsl:apply-templates select="sait" /> <br /> <br /> </xsl:template> <xsl:template match="sait"> <table border="1" bgcolor="#006fdd" width="700"> <tr> <th><xsl:value-of select="name" /></th> </tr><tr> <td><xsl:value-of select="gai" /></tr> </table> <br /> </xsl:template> <xsl:template match="link" > <a> <xsl:attribute name="href"> <xsl:value-of select="@url" /> </xsl:attribute> <xsl:value-of select="text()" /> </a> </xsl:template> </xsl:stylesheet> どこら辺が間違ってますでしょうか?

    • ベストアンサー
    • XML
  • XMLをXSLTやCSSに変換してHTMLで出力

    XMLデータ <?xml version="1.0" encoding="Shift-JIS"?> <flower> <naiyou> 本文 </naiyou> <name>花言葉</name> <flow><name>あきらめ </name></flow> <flow><list>悲しい思い出 </list></flow> <flow><name>情熱 </name></flow> <flow><list>独立 </list></flow> <flow><name>再会 </name></flow> <flow><list>想うはあなた一人 </list></flow> <flow><name>また会う日を楽しみに </name> </flow> </flower> を変換したいのです。 XSLTデータ <?xml version="1.0" encoding="Shift-JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="F:\i08i008\I08I008.html"> <xsl:output method="html"/> <xsl:template match="/"> <html><xsl:apply-templates/></html> </xsl:template> <xsl:template match="flower"> <h1>彼岸花</h1>  <xsl:apply-templates/>  </xsl:template> <xsl:template match="naiyou"> <p><xsl:value-of select="."/></p> </xsl:template> <xsl:template match="flow"> <xsl:value-of select="name"/> <table flame="border" width="50%"> <tr><th>彼岸花</th><th>花言葉</th></tr> <xsl:for-each select="flow"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="list"/></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> ここまで作ったのですが、うまくHTMLに出力できません。原因がわかる方、教えてください。 イメージ図 <html> <head> <title>彼岸花</title> </head> <body> <div style="font-weight:bold"> 彼岸花 </div> ヒガンバナ科ヒガンバナ属の多年草。別名「曼珠沙華」という別名があるのは有名だが、他にも呼び名があるのは知られていない。<br> ただ、その名前が「地獄花」、「捨子花」などと縁起でもない名前ばかりである。<br> その中でも何故「はっかけばばあ」という呼び名があるのかは疑問である。<br> <img src="http://farm1.static.flickr.com/120/252830085_712ffd338b.jpg"width="171" height="171"><br> <br> <table border="1"bgcolor="#b22222"> <tr> <th colspan="2">彼岸花</th> </tr> <tr> <th colspan="2">花言葉</th> </tr> <tr> <th>悲しい思い出</th> <th>独立</th> </tr> <tr> <td>独立</td> <td>諦め</td> </tr> <tr> <td>再開</td> <td>情熱</td> </tr> </table> </body> </html> XSLTについては(CSSもそうですが)、イメージ図の通り、写真を掲載したりや表に配色をしたいとも考えております。そのあたりのアドバイスも頂けると嬉しいです。 あとCSSについてもサイトで色々見たのですが、どれもさっぱり解かりませんでした。初心者な私にでも解かりやすいサイト教えてください。一から勉強しているところです。 CSSはこういう風に記述するんだよ、と簡単に教えて頂ける優しい方もいたら回答お願いします。サイトだけでは悪戦苦闘しそうなもので…。物凄い不安です。

    • 締切済み
    • XML