<XML総合 part="3"/>

■ このスレッドは過去ログ倉庫に格納されています
2008/10/07(火) 17:40:09
XMLなんでもスレ。

前スレ: 【XML】xmlns, XSLT, RelaxNG, JAXP, etc.【総合】
 http://pc11.2ch.net/test/read.cgi/tech/1133280488/
前々スレ: 【必須?】XML技術【使ってる?】
 http://pc8.2ch.net/test/read.cgi/tech/1090253584/
2010/01/05(火) 20:05:13

仮に作ったとしても、
<person id="00000001">
 . . .
</person>
というように、IDで管理することになると思うのですが、国民総背番号制みたいで
なんか気が引けてしまうんですよね^^

みなさんだったらどのように作成しますか?
2010/01/05(火) 20:09:14
じゃあXMLに限らず電子データとして人の情報を扱うこと自体倫理的に問題があるんじゃね?
じゃあ紙ならいいの? 人間の情報を文字だけで扱うことは倫理的に問題ないの?
2010/01/05(火) 20:10:38
>>560
> 公開済みの文書とはいえほぼ無名の研究者の情報は、やはりプライベートなもの
> として保護されるべきなのでしょうか。

おまえ研究者じゃないな。そんなアホなこと言い出すってことは。
2010/01/05(火) 20:15:10
著者情報ということなら既存の図書DBでも参考にしてみたら?
だいたい、漢字の著者名とその読み、同姓同名の場合の同定情報として生年、
というぐらいの情報が普通。
2010/01/05(火) 20:16:27
DNAデータバンクとか卒倒モノだなw
2010/01/05(火) 20:36:07
よく分からんから適当にアドバイスするが、

書誌情報のXMLデータベースがあるなら、普通はそこに著者名も埋めておいて
後からXQueryで取り出すなり、著者のデータを後から追加で埋めるなりするわな
そこから著者データを取り出して別に管理しようってことなら
XLinkで相互参照させるとかすればいいだけだろ

ってか>>560はあんまXMLがどういうものか分かってなさそうだ
2010/01/05(火) 22:07:10
foafでいいんでない?
2010/01/05(火) 22:19:55
DublinCoreまで話が広がるかもしれないがまあ待て。

>>560
「書籍などのXMLアプリケーションはよく見ますが」

まずはどこでなにを見たのかkwsk聞こうじゃないか。
2010/01/05(火) 22:29:59
銀行のシステムしかり、住民基本台帳しかりID使っていないデータベースが(ry
>>561にリレーショナルDBの基礎から小一時間(ry
2010/01/05(火) 23:06:11
髪の毛一本もらってきてXMLに貼り付けておくのはどうだろう
2010/01/05(火) 23:22:49
名簿って「人」のデータベースだよね
以上
2010/01/05(火) 23:29:32
お前ら、>>560に釣られ過ぎw
2010/01/06(水) 00:09:44
>>570
*ML
2010/01/07(木) 01:34:12
urn:dna:xxxx-xxxx...
575デフォルトの名無しさん
垢版 |
2010/02/03(水) 00:01:26
簡単にXML読みたいのだけど
ttp://hidemon-memo.blogspot.com/2009/01/codesynthesis-xsd.html
これは使える?
2010/02/03(水) 18:32:03
>>569
戸籍ってIDふってあるのかな?かな?
2010/02/04(木) 11:26:05
DBなら内部ではふってあるだろう。
国民総背番号制は、共通のIDを使いまわすことじゃないの
2010/02/04(木) 21:54:00
XMLパーサーで、C++対応しているものでお奨めは?色々あり過ぎてどれを使えばいいか分かりません。
XMLスキーマ使って妥当性検証が出来るのがいいんですが、軽量なものは無いでしょうか?
Xerces-C++はDLLのサイズが大きすぎます。
579578
垢版 |
2010/02/04(木) 22:02:32
CodeSynthesis XSDというのも使ってみたのですが、
動作にXerces-C++が必要なようなので・・
2010/02/04(木) 23:07:32
>>578
「xml parser generator」でググったらこんなの出てきた。

http://www.xmlbooster.com/
581578
垢版 |
2010/02/04(木) 23:25:45
XMLBoosterは・・すいませんパスです。
なんとかDLできましたが、ドキュメントはダウンロードできないし、使い方が分かりません・・。

libxml++というのはどうなんでしょう。
2010/02/04(木) 23:31:03
>>579
XSD/e はダメなの?parser generatorの方。
583578
垢版 |
2010/02/05(金) 00:20:08
>>582
良さそうですね。
これを使ってみることにします。
ありがとうございました!
584デフォルトの名無しさん
垢版 |
2010/02/10(水) 23:30:20
Xerces-C++
585584
垢版 |
2010/02/10(水) 23:33:25
専ブラでTab→Wを押してしまい間違って書き込まれちゃった。
Xerces-C++を静的リンクするには
XERCES_STATIC_LIBRARYというマクロを定義しなくちゃいけないことを初めて知った・・。
2010/02/11(木) 19:56:29
XMLマスターの勉強のために、XQueryのサンプルを実行したいのですが、
良い方法はないでしょうか。
準備にあまり時間がかからず、なるべく仕様に忠実なものが望ましいのですが。
2010/02/11(木) 22:29:06
フリーのXMLDBなら
eXistとかIBMのDB2お試し版とかOracleのBerkeleyDBXMLとか
とりあえずOracleが手軽では?
2010/02/12(金) 02:13:28
自分はSaxon-HE 9.2で遊んでた

http://saxon.sourceforge.net/
2010/02/12(金) 19:16:57
>>587>>588
ありがとうございます、試してみます!
590デフォルトの名無しさん
垢版 |
2010/02/24(水) 23:34:23
フリーのXMLエディターでおすすめって何でしょう。
100KB超えるXMLファイルを編集したいのですが、
そんな大きなファイルを編集すると固まってしまうようなのばかりです。

Visual C++ 2008 Express EditionについているXMLエディタは、バリデーションやオートコンプリートも可能で重くもなりませんが、
手軽にインストール出来ないのが難点です・・。
EclipseのXMLエディタも高機能ですが、大きなファイルを編集しようとすると結構重いんです。
2010/02/25(木) 01:24:50
>>590
テキストエディタ以上の部分で何を必要としてるかわからないんだけど、
ハイライト、バリデーション、補完ぐらいなら jEdit + XML プラグインを
試してみるといいかもしれない。

jEdit - Programmer's Text Editor
http://pc12.2ch.net/test/read.cgi/software/1196182758/
592デフォルトの名無しさん
垢版 |
2010/02/25(木) 08:33:25
申し訳ないのですが,ご質問させてください.
vc++2008のexpress editionの環境で,msxml6.hをインクルードし,
xpathで要素を指定し,任意の要素のtextを取得することはできるのですが.

要素の内容を書き換えることができません.
例)<width unit="millimeters">230</width>→<width unit="millimeters">100</width>
上記のような操作を行うためのサンプルコードなどが記載されているサイトをご存じないでしょうか.

それとも,msxmlは,ただ読み込むだけの機能しか持たないのでしょうか.
お教えください.よろしくお願いいたします.
2010/02/25(木) 11:34:04
>>592
> 要素の内容を書き換えることができません.

どういうコードで書き換えができなかった?
ふつうにDOM操作するだけですよ。
2010/02/25(木) 16:19:51
XPathは文書中の場所を表現するだけXPathで表された場所にあるものをDOMなど文書を書き換えれるAPIに渡せば可能。
XPathは操作用の仕様ではない。

もし、意味が分からんならそーすうp。
2010/03/03(水) 22:58:23
>>591
jEdit使ってみました。
確かに軽いのはいいんですが、Eclipseについてるものほど高機能ではないのがちょっと
(スキーマにdocumentationを設定していても表示されないとか、
 属性の値の補完が出来ないとか)
2010/03/30(火) 17:36:36
「タグの間にデータまたはノードが存在しない部分」のマッチで困っております。
お分かりの方、ご教授ください。

サンプルのような文書で、<c id="2" x="val2"> と <c id="3" x="val3"> の間に
何も無い場合にマッチしたいのですが、どのようにすればマッチできますか。

マッチしたい部分:
<c id="2" x="val2">str a - 3</c><c id="3" x="val3">str a - 5</c>

サンプル:
<?xml version="1.0" encoding="utf-8"?>
<root>
<pair>
<a><c id="1" x="val1">str a - 1</c>str a - 2<c id="2" x="val2">str a - 3</c>str a - 4<c id="3" x="val3">str a - 5</c></a>
<b><c id="1" x="val1">str a - 1</c>str a - 2<c id="2" x="val2">str a - 3</c><c id="3" x="val3">str a - 5</c>str a - 4</b>
</pair>
<pair>
<a><c id="1" x="val1">str b - 1</c>str b - 2<c id="2" x="val2">str b - 3</c>str b - 4<c id="3" x="val3">str b - 5</c></a>
<b><c id="1" x="val1">str b - 1</c>str b - 2<c id="2" x="val2">str b - 3</c>str b - 4<c id="3" x="val3">str b - 5</c></b>
</pair>
</root>

自分で「//b/c[@x=val3]/preceding-sibling::text()[1]」や
「//b/c[@x=val3]/preceding-sibling::*[1]」などを試して「前一つのノードを
マッチ」するところまで来ましたが、問題の部分のマッチはできませんでした。
2010/04/02(金) 15:23:10
ttp://www.w3.org/TR/2010/WD-xml-c14n2-20100304/
C14n2の最新ドラフトが出てた
2010/04/02(金) 15:35:16
あと、これすごく重要なDraftだと思う
Associating Schemas with XML documents 1.0 (First Edition)
ttp://www.w3.org/XML/2010/01/xml-model/

PIでXMLとスキーマを関連付ける仕様。>>555-557で言ってるようなやつね。
代わりにISO/IEC 19757の10部がcancelledになってる
2010/04/11(日) 05:47:28
たとえばDTDの代わりに
<?xml-model href="urn:publicid:-:W3C:DTD+XHTML+1.1:EN"?>
みたいな風に書けるわけだ。
600デフォルトの名無しさん
垢版 |
2010/04/17(土) 07:00:03
xslt(xpath?)の質問です。 入れ子のこんな文書でそれぞれの深さの"node"でテンプレートを呼び出したいと思います。
<node name="root">
 <node name="node1">
  <node name="node11">
   <node name="node111">
  </node>
  <node name="node12"/>
  <node name="node23"/>
 </node>
 <node name="node2">
  <node name="node21"/>
  <node name="node22"/>
  </node>
 </node>
</node>

しかし<xml:template match="node">とやると一番上の<node name="root">しかマッチしません.
match="//node"でも同じです. "/*/node"とか"/*/*/node"とかするとそれぞれの深さのnodeにはマッチ
するのですが、全ての深さでマッチするにはどういう記述式があるのでしょうか?
2010/04/17(土) 07:01:13
>>600
× <xml:template match="node">
○ <xsl:template match="node">
2010/04/17(土) 10:18:10
<apply-templates select="//node" />
603600
垢版 |
2010/04/17(土) 10:27:17
>>602
お〜出来た。 ありがとうございます!
2010/04/20(火) 16:03:20
W3C XML Schemaをちょこっと拡張して使うという手法はあるのでしょうか?
データモデリングに使いたいと検討しているのですが、例えば
<xsd:element name="hoge" type="xsd:string" access="readOnly">

というような感じで"access"というような感じの属性を追加したいと思います。
それ以外はほとんど流用出来る様な気がするのでわざわざそれだけの為に
自分でスキーマ言語を定義したくないと希望しているのですが。 
2010/04/20(火) 16:15:06
スキーマに属性を追加できたとしてどうなるの?
その例の readOnly の意味が分からないんだが。
2010/04/20(火) 16:36:36
XMLのドキュメントを表す為のスキーマでは無く、あくまでも抽象的なデーターモデルとして
スキーマとして使おうと思ってます。 で、例えばデータが読み書き出来る種類なのか、
読む事だけが出来るデータであるかでそのスキーマを使った派生物(データのアクセス層のコード、
UI等)を生成しやすくしたいと。 (SNMPのMIBのACCESS属性の概念が頭にあります)

もちろんその情報を全く別に供給することも可能でしょうが、スキーマを拡張出来ればより
コンパクトに表現が出来ると期待してます。
2010/04/20(火) 23:54:44
名前空間別にすればいくらでもやって構わない気がする
気がするだけでスキーマ読んだ上で発言してるわけじゃないけど
2010/04/21(水) 04:01:13
なんでそれをスキーム側だけでやるんだ。

例えばだが、スキームを適用するXMLの方を@xmlns:xreadと@xread:readOnlyで拡張して
XML Schemaで@xread:readOnlyの値を制限する方が
使いやすい上に便利だと思うけど
2010/04/21(水) 04:46:52
>>608
すみません、申し訳ないのですが理解出来ません.@は何を意味するのでしょうか?
2010/04/21(水) 12:49:29
つ at
2010/04/21(水) 12:49:55
at -> atr -> atrb
612604
垢版 |
2010/04/23(金) 02:53:13
しっくり来ないのでやっぱりRelax NGにしようかなとしばらく検討。 これで
まあ行けそうかなと思ってたらYANGというIETFで開発しているデータモデル言語に
巡り会いました。 自分の希望している機能は全てある感じですのでこれに決定。 

なによりもXMLでないので読みやすくていい(YINというXMLバージョンもあり)。
Relax NGのcompact syntaxよりさらに簡素でこんな感じ;

list interface {
  key "name";
  leaf name {
   type string;
  }
  leaf speed {
    type enumeration {
     enum 10m;
     enum 100m;
     enum auto;
   }
  }
  leaf observed-speed {
   type uint32;
    config false;
 }
}
2010/05/03(月) 13:11:39
YANGてドラフトの途中じゃなかったっけ。
性質的にはスキーマやMLやIDLと同じもんなんだがスキーマ定義がいやとか言ってる奴が使える代物なのか?
普通こういう生な部分触りたくない場合はジェネレータに吐かせるもんだと思うんだが。
614604
垢版 |
2010/05/03(月) 22:05:06
>>613
現在ドラフト12まで改訂され、この版でRFCになるためのlast callがかけられてますので
ほぼ最終版に近いと言っていいと思います。

> スキーマ定義がいやとか言ってる奴が使える代物なのか?
とりあえず一週間ほどいじってみて、スキーマからCLIのコマンド自動生成、コマンドパーザー、
CLI<->アプリケーション間のメッセージ定義、エンコーダー、デコーダー、ディスパチャーのコードを
全て自動生成するプロトタイプが出来ました。 YANGパーザーはPythonで書かれたPyang、コード生成には
Pythonテンプレートエンジンのcheetahを使用。 生成されたコードは全てCのみ。

一度完成すると、ひとつデータをスキーマに追加してフルビルドすると、アプリ側でディスパチャーから
呼ばれる関数が1つundefinedと出るので、その関数を書いて、値を引っぱって自動生成されたエンコーダー
関数を書くだけ。 

今まで色んな「フレームワーク」を使って来ましたが、これは自分の必要な機能だけを生成する、
「フレームワーク生成フレームワーク」とでも言える、自分に取って理想の開発環境です。
615デフォルトの名無しさん
垢版 |
2010/05/04(火) 01:41:12
データにバイナリ記述できるXML仕様ってないですか?
2010/05/04(火) 11:31:51
Base64エンコードという発想はないのか君は
2010/05/04(火) 11:51:05
XML バイナリ、で検索すればわらわら出てくる。
2010/05/04(火) 12:44:40
結果をよくみろ。xml バイナリで検索したらEXIとかのバイナリーxmlが出てくる。
バイナリを直接埋め込むんじゃなくてリンクすればいいんじゃないの?
直接だとbase64くらいが妥当。
619デフォルトの名無しさん
垢版 |
2010/05/04(火) 14:20:46
>>618
リンクってのはどういった方法でしょうか?
2010/05/05(水) 00:32:33
>>619
1. バイナリをどっかにおいとく
2. おいた場所へのリンクをXML中に記述する
2010/05/05(水) 08:36:11
SOAPならSOAP with attachments
2010/05/05(水) 09:26:58
懐かしいな、MTOMとかストリーミングできなくて昔悩んだ。
623デフォルトの名無しさん
垢版 |
2010/05/24(月) 19:51:18
      l、、_     _,/'}
      |ヽ''~ ̄ ̄ ̄~`ヾ
     /_,,,..   ..,,,_.`v_'`、
    /:  ━     ━  | ニ_}  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |::    ∈∋    ヽ  | < <response action="age" period="regularly" />
  //::    -=,=.ヮ.     |ヽ、|  \________
  /'../::    /∠.._     |、.ノ
 /':::|:::      ̄ ̄      |./
 !-'L|::.             v'
.   ヾ:::..           /
.    , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
    'ー┐,,..、_ ノ  l_,,,...、 _,,一
624デフォルトの名無しさん
垢版 |
2010/05/25(火) 00:54:04
      l、、_     _,/'}
      |ヽ''~ ̄ ̄ ̄~`ヾ
     /_,,,..   ..,,,_.`v_'`、
    /:  ━     ━  | ニ_}  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |::    ∈∋    ヽ  | < <response action="age" period="regularly" />
  //::    -=,=.ヮ.     |ヽ、|  \________
  /'../::    /∠.._     |、.ノ
 /':::|:::      ̄ ̄      |./
 !-'L|::.             v'
.   ヾ:::..           /
.    , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
    'ー┐,,..、_ ノ  l_,,,...、 _,,一
625デフォルトの名無しさん
垢版 |
2010/05/25(火) 23:20:11
      l、、_     _,/'}
      |ヽ''~ ̄ ̄ ̄~`ヾ
     /_,,,..   ..,,,_.`v_'`、
    /:  ━     ━  | ニ_}  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |::    ∈∋    ヽ  | < <response action="age" period="regularly" />
  //::    -=,=.ヮ.     |ヽ、|  \________
  /'../::    /∠.._     |、.ノ
 /':::|:::      ̄ ̄      |./
 !-'L|::.             v'
.   ヾ:::..           /
.    , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
    'ー┐,,..、_ ノ  l_,,,...、 _,,一
626デフォルトの名無しさん
垢版 |
2010/06/07(月) 18:45:26
      l、、_     _,/'}
      |ヽ''~ ̄ ̄ ̄~`ヾ
     /_,,,..   ..,,,_.`v_'`、
    /:  ━     ━  | ニ_}  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |::    ∈∋    ヽ  | < <response action="age" period="regularly" />
  //::    -=,=.ヮ.     |ヽ、|  \________
  /'../::    /∠.._     |、.ノ
 /':::|:::      ̄ ̄      |./
 !-'L|::.             v'
.   ヾ:::..           /
.    , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
    'ー┐,,..、_ ノ  l_,,,...、 _,,一
627デフォルトの名無しさん
垢版 |
2010/08/06(金) 11:38:12
ここ http://www6.airnet.ne.jp/manyo/xml/schema/step46-2.html とか見てるんですけど
namespace の解釈の仕方がよくわからないので教えてほしいです

testA.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema targetNamespace="http://test/nsA" xmlns:xsd="http://www.w3.org/2001/XMLSchema">


testB.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema targetNamespace="http://test/nsB" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <import namespace="http://test/nsC" schemaLocation="testA.xsd"/>


として testB.xsd が testA.xsd をインポートすると、targetNamespace のネームスペースがhttp://test/nsCに置換されたものと解釈すればいいのか
それとも、targetNamespace 等が設定されていない時に http://test/nsC が適用されると考えればよいのか、もっと別の解釈なのかと
正しい所はどこなんでしょうか?
628デフォルトの名無しさん
垢版 |
2010/08/07(土) 14:18:05
eclipseで人気のあるxmlプラグインの名前を教えていただけませんか?
629628
垢版 |
2010/08/07(土) 14:19:23
ごめんなさい、eclipseスレがありました
そちらへ移動します
630デフォルトの名無しさん
垢版 |
2010/08/12(木) 23:52:35
>>627
testB.xsdの<import>はエラーになるんでない?

<import namespace="http://test/nsC" ... />は、"http://test/nsC"という名前空間がついた
スキーマ(が世界のどこかにあって、それ)をインポートするよ、という宣言。
schemaLocationはオマケで、スキーマ定義を入手できるであろう場所のヒントでしかない。
XML SchemaプロセッサがschemaLocationにしたがってtestA.xsdをゲットして処理したら、
targetNamespaceが"http://test/nsC"じゃないんで、エラーになるんじゃないかと思う。

XML Schema Part 1の§4.2.3のSchema Representation Constraint: Import Constraints
and Semantics(スキーマ表現の制約:importの制約と意味)
ttp://www.w3.org/TR/2004/REC-xmlschema-1-20041028/structures.html#src-import
の3つ目の条件では、次のいずれかだ、と書いてある(意訳)。
・namespace属性がある場合は、importされるスキーマのtargetNamespaceと一致しろ。
・namespace属性がない場合は、importされるスキーマにtargetNamespaceがあってはダメ。
2010/08/14(土) 16:34:27
いやまぁ
2010/08/14(土) 22:16:43
確実にエラー出る
2010/08/21(土) 09:49:21
XSLTの質問なんですが、以下のxslを自分自身に作用させると
a a b の後にcontent以下のテキストが表示されます。(aは何故2回出力される?)
その後、コメントアウトすると組み込みテンプレートルールを上書きするためcontent以下のテキストは消えます。
ただ、bも表示されなくなるのは何故なのでしょうか
優先度の問題かとも思いましたが、priority="3"とかにしても同じ結果になります。
変換はmsxmlでやってます

<?xml version="1.0" encoding="Shift_JIS" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns = "http://www.w3.org/1999/xhtml"
>
<xsl:template match="/">a <xsl:apply-templates /></xsl:template>
<xsl:template match="/xsl:stylesheet/content/child/text()">b <xsl:value-of select="."/></xsl:template>
<!--
<xsl:template match="text()">c </xsl:template>
-->

<content xmlns="http://www.w3.org/1999/xhtml">
<child name="kebin">
this is child
<grandchild>this is grandchild</grandchild>
child end
</child>
<child name="john">
this is child2
<grandchild>this is grandchild2</grandchild>
child end2
</child>
</content>
</xsl:stylesheet>
2010/08/21(土) 22:31:27
自己解決しました。
xmlns = "http://www.w3.org/1999/xhtml"
これが原因
2010/08/22(日) 04:19:37
<a>hoge<b>fuga</b>piyo</a>

hogeだけ、やpiyoだけ、はXPathでどう表すの?
2010/08/22(日) 15:31:47
a/text()[1], a/text()[2]
2010/08/23(月) 08:13:49
>>636
おお、出来た!ありがとう。こんな書式があったんだ

今、xml->xhtmlなxsltを書いてて
<mail href="hoge@fuga.bar.foo.bar.baz.com">メールを送る</mail>
自分の名前空間でこんなタグを作ったんだけど
この時のhrefの値を入力としてメールアドレスを
暗号化するようなことってxsltで実現は出来るの?
xsltでどこまで出来るのかわからなくて
638デフォルトの名無しさん
垢版 |
2010/08/23(月) 12:54:57
どういう暗号化なのか知らんけど、使ってるXSLTエンジンが自作関数を組み込める機構をもっていれば何でもできるんじゃね。
639デフォルトの名無しさん
垢版 |
2010/08/23(月) 13:05:07
MSXMLには<msxml:script>なる拡張機能があるね。
tp://msdn.microsoft.com/en-us/library/ms256042(v=VS.85).aspx
こりゃなんでもできそうだな。
2010/08/24(火) 05:47:40
いい情報をありがとう
JavascriptやらC#,perlなんかも呼べるみたいだね
perlが使えるとか、もうね、ワクワクしてきた
暗号化っていっても、スパム先アドレス集めてる
クローラがだませればいい程度なんで
シーザー暗号/HTMLエスケープ/実体参照あたりを
組み合わせるぐらいの簡単なやつだよ
2010/09/03(金) 23:42:47
>>640
クローラ程度なら独自定義の実体参照でもうお手上げなんじゃない?
2010/09/06(月) 14:11:25
既にあるHTML/XHTMLコードをコピペして、それを使いたいんですが
XSLTで変換せずにXHTMLとして実行するような方法ってありますか?
 <![CDATA[ を付ければ完全にエスケープしてしまう
 value-ofを使ってもエスケープされて実行はされない
 一つ一つ変換するXSLTコードを書けば出来るが、作業が大変過ぎる
2010/09/11(土) 22:31:00
>>642
実行というのがよくわからんが、copy-of ?
2010/09/12(日) 06:55:43
ありがとうございます。やってみました(下のB)。
望みの動作に少し近づいたのですが
元のコードの修正が必要な可能性があるのと、名前空間がくっつく問題が出てきました
質問の仕方が悪かったのと勘違いもあったので状況整理します

xml -> xslt -> xhtml
という状況で、xmlにHTMLのコード(XMLとして妥当でない可能性もある)を貼り付けたい
xmlはこんな感じです
<?xml version="1.0"?><code xmlns:my="http://a.com"> <!--例えば<html><br></html>みたいなのを張りたい--> </code>

A
 xml側で<![CDATA[ <html><br></html> !]]>とするとエスケープされてしまい、出力結果では文字になってしまう
B
 brは妥協して手動で<br/>になおしてxml側に記述することにして
 xslt側でcopy-ofを使うと
 <html xmlns:my="http://a.com"><br/></html>のように不要なxmlnsがついてしまう
 貼り付けるコードは修正したくないので<html xmlns="http://www.w3.org/1999/xhtml"><br/></html>のようにはしたくない
C
 brは妥協して手動で<br/>になおしてxml側に記述することにして
 <xsl:template match="my:html"><xsl:element name="html">... </xsl:template>
 こんなのを必要なだけ書く。大変
 しかも、上の例ではMSXMLのバグなのかmatch="my:html"ではマッチせずmatch="html"でマッチする
 出力結果にはちゃんと<html xmlns:my="http://a.com.">みたいなのがついてくるのに。
2010/09/12(日) 07:01:36
Cを動作させたときのサンプルです
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:my="http://a.com"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="html"> <xsl:copy-of select="."/> </xsl:template>
</xsl:stylesheet>
2010/09/12(日) 07:06:25
>>645 Cじゃなくて、Bでした、すみません
2010/09/12(日) 15:15:22
方法その1
入力:
<code xmlns="http://example.com/code">
<html><head><title></title></head><body></body></html>
</code>

XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:code="http://example.com/code">
<xsl:template match="/"><xsl:apply-templates/></xsl:template>

<xsl:template match="code:code"><xsl:apply-templates mode="enhtml"/></xsl:template>

<xsl:template mode="enhtml" match="*">
<xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
<xsl:apply-templates mode="enhtml" select="@*|node()"/>
</xsl:element>
</xsl:template>

<xsl:template mode="enhtml" match="@*|text()|comment()|processing-instruction()">
<xsl:copy>
<xsl:apply-templates mode="enhtml" select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
2010/09/12(日) 15:16:38
方法その2

入力:
<code xmlns="http://example.com/code">
<![CDATA[
<html>
<head>
<title></title>
</head>
<body>
<br>
</body>
</html>
]]>
</code>

XSLT:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:code="http://example.com/code"
>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="code:code">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:template>
</xsl:stylesheet>
2010/09/12(日) 15:18:42
あと、HTMLのXHTML化にはHTML Tidyとか。
2010/09/13(月) 03:35:22
まさか2つとも解決方法があるとは思いませんでした
TidyってW3Cの中に人が作ってるツールなんですね
[―{}@{}@{}-]さん、色々とありがとうございました。

初心者には、XSLTは本当に罠が多いです
apply-templatesの規則(C++のtemplateみたいなのが良かった)
組み込みテンプレートルール
XPATHは添え字が1から
MSXMLはXHTML1.1で動かない
xmlnsはバックスラッシュの有無で動作しない
xsl:ifにelseがない(choose)
独自定義したnsのマッチの仕方

最近は、最初にこんなの書いてます
<xsl:template match="*|@*|text()|q:*" priority="-1.0" />
2010/09/13(月) 23:12:55
>MSXMLはXHTML1.1で動かない
xmlしょりするのにmsxml使うのが間違い
2010/10/22(金) 10:10:10
<articles>
<article id="1234">
<np>政府</np>が<pred>発表し</pred>た経済政策では・・・
</article>
</articles>

みたいなXMLがあるとき、<pred>発表し</pred>をコンテキストノードとして
同じarticle内のこれより前のテキストノードをすべて取得するには
どういうxpathを書くのが効率的でしょうか。

"preceding::text()[ancestor::article[@id=1234]]"で一応できたんですが
文書中で前にあるテキストノードをすべてテストしているのか
文書の後の方になるにつれて極端に処理が遅くなります。
使用しているのはRubyとMSXMLです。
2010/10/23(土) 16:21:26
preceding-sibling::text()|preceding-sibling::*/descendant::text()
2011/03/05(土) 17:26:14.15
ヤフーファイナンスから株価を取得するのをEXCELのVBEとXMLで作ったんですが、遅いです。
もっと高速化するにはどうしたらいいのでしょうか?
2011/03/05(土) 20:30:17.33
>>654
全然詳しくないけど、まずはどこがボトルネックになってるのか調べるのが良
いんでは?
2011/03/06(日) 13:10:04.57
マジレスするとEXCELで作るのがそもそも間違い
VB.NETかC#なんで拾ってEXCEL操縦して吐き出させた方が良い
2011/03/22(火) 12:53:08.96
msxmlならボトルネックはExcelだろうから
VBやC#使ったって一緒だろ
Excelのセルに出力する方法を工夫しないと
658デフォルトの名無しさん
垢版 |
2011/03/23(水) 18:18:11.70
質問です。
<xs:element>の子要素に<xs:complexType>を書くのと、
<xs:element>と<xs:complexType>を別々にして<xs:schema>の子要素とするのは、
何が違いますか?
簡単で結構ですので、教えてください。

1.
<xs:schema (属性省略)>
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

2.
<xs:schema (属性省略)>
<xs:complexType name="customer">
<xs:sequence>
<xs:element name="name" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="customer" type="customer" />
</xs:schema>
2011/03/23(水) 18:40:02.64
何も違わない
あえて言うなら使いまわせるかどうか・見た目
2011/04/06(水) 22:02:48.60
下見たいな感じでxml⇔csvの相互変換掛けられる物ってない?

<data>
<chara>
<hp>11</hp>
<mp>12</mp>
<magic>
<fire>13</fire>
</magix>
<gold>14</gold>
</chara>
<chara>
<hp>21</hp>
<mp>22</mp>
<magic>
<fire>23</fire>
<ice/>24</ice>
</magix>
<gold>25</gold>
</chara>
</data>

data
chara
hp,mp,magic,,gold
hp,mp,fire,ice,gold
11,12,13,,14
21,22,23,24,25
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況