[ja-users] Calc: FILTERXML関数を使って値を取り出すには?

2014-06-20 スレッド表示 Jun NOGATA
こんにちは。野方です。

LibreOffice 4.2から入ったCalcのWEBSERVICE関数を使って、Web APIにアクセ
スして、返ってきたXMLからFILTERXML関数を使って値を取り出そうとしていま
すが、うまく取り出すことができません。

使っているWeb APIは、こちらです。

- 簡易ジオコーディングサービス / Finds.jp Webサービス: http://www.finds.jp/wsdocs/geocode/

市町村コードを指定してアクセスすると緯度経度がXMLで返ってきます。
大阪市北区(27127)なら、こんな感じでアクセスすると緯度経度が返ってきます。

- http://www.finds.jp/ws/geocode.php?mcode=27127

試しにA1セルとA2セルに

A1セル =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
A2セル =FILTERXML(A1,"//latitude")

と書いて試しましたが、#VALUEエラーになってしまいます。

XPathをあまり理解していないので書き方が悪いのかと思い、Livedoorのお天気
RSSを使って試したところ

- http://weather.livedoor.com/forecast/rss/area/27.xml

A1セル =WEBSERVICE("http://weather.livedoor.com/forecast/rss/area/27.xml";)
A2セル =FILTERXML(A1,"//item[3]/title")

こちらは、うまくtitle要素の値を取り出すことができました。

ちょっと、よくわからなくなってきたのですが、FILTERXMLのXpathをどういう
風な書き方をすると値を取り出すことができるのでしょうか。
「これを見ろー」でもいいので、なにか情報ありましたら教えてください。

-- 
野方 純 (NOGATA,Jun) - mail: noga...@gmail.com
 - web: http://www.nofuture.tv/diary/

-- 
Unsubscribe instructions: E-mail to users+unsubscr...@ja.libreoffice.org
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/users/
All messages sent to this list will be publicly archived and cannot be deleted



Re: [ja-users] Calc: FILTERXML関数を使って値を取り出すには?

2014-06-20 スレッド表示 matuaki
matuakiです。

このサービスが出しているXMLをFILTERXML関数が理解できていないみたいです。

=WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
で取得したXMLで

http://finds.jp/ts";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>

の部分を



に変更するとFILTERXML関数は値を読み込みました。
(式は=FILTERXML(A1,"//geocode/result/latitude")に変えましたが)

この現象が、XMLを出している側の問題かCalcの関数の方に問題があるのか、わ
たしはよく分かりません。

参考までに。

(2014年06月20日 19:10), Jun NOGATA wrote:
> こんにちは。野方です。
> 
> LibreOffice 4.2から入ったCalcのWEBSERVICE関数を使って、Web APIにアクセ
> スして、返ってきたXMLからFILTERXML関数を使って値を取り出そうとしていま
> すが、うまく取り出すことができません。
> 
> 使っているWeb APIは、こちらです。
> 
> - 簡易ジオコーディングサービス / Finds.jp Webサービス: http://www.finds.jp/wsdocs/geocode/
> 
> 市町村コードを指定してアクセスすると緯度経度がXMLで返ってきます。
> 大阪市北区(27127)なら、こんな感じでアクセスすると緯度経度が返ってきます。
> 
> - http://www.finds.jp/ws/geocode.php?mcode=27127
> 
> 試しにA1セルとA2セルに
> 
> A1セル =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
> A2セル =FILTERXML(A1,"//latitude")
> 
> と書いて試しましたが、#VALUEエラーになってしまいます。
> 
> XPathをあまり理解していないので書き方が悪いのかと思い、Livedoorのお天気
> RSSを使って試したところ
> 
> - http://weather.livedoor.com/forecast/rss/area/27.xml
> 
> A1セル =WEBSERVICE("http://weather.livedoor.com/forecast/rss/area/27.xml";)
> A2セル =FILTERXML(A1,"//item[3]/title")
> 
> こちらは、うまくtitle要素の値を取り出すことができました。
> 
> ちょっと、よくわからなくなってきたのですが、FILTERXMLのXpathをどういう
> 風な書き方をすると値を取り出すことができるのでしょうか。
> 「これを見ろー」でもいいので、なにか情報ありましたら教えてください。
> 


-- 
-
matuaki
matuaki_at_ma-office.org
http://openoffice.sblo.jp/

-- 
Unsubscribe instructions: E-mail to users+unsubscr...@ja.libreoffice.org
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/users/
All messages sent to this list will be publicly archived and cannot be deleted



Re: [ja-users] Calc: FILTERXML関数を使って値を取り出すには?

2014-06-20 スレッド表示 Jun NOGATA
こんにちは。野方です。

(2014年06月21日 07:25), matuaki wrote:
> matuakiです。
> 
> このサービスが出しているXMLをFILTERXML関数が理解できていないみたいです。
> 
> =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
> で取得したXMLで
> 
> http://finds.jp/ts";
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> 
> の部分を
> 
> 
> 
> に変更するとFILTERXML関数は値を読み込みました。
> (式は=FILTERXML(A1,"//geocode/result/latitude")に変えましたが)

おお!ホントですね!
普通に上からたどっていっても、きちんと緯度が取り出せました。

XML名前空間(xmlns)が怪しそうというので、一つずつ消してみたところ
「xmlns="http://finds.jp/ts"」が入ってるとパースできないようです。

もしかして、名前空間は指定してあるけど、そこにスキーマがないから、
それに従って処理できない?


> この現象が、XMLを出している側の問題かCalcの関数の方に問題があるのか、わ
> たしはよく分かりません。

「XML名前空間を指定していると、それにしたがって処理しようとするので、元
のXMLの指定が間違ってるとコケる」と仮説を立ててみたのですが、合ってるか
どうかは改めてdiscussで尋ねたほうがいいかもですね。

ありがとうございます。



(2014年06月21日 07:25), matuaki wrote:
> matuakiです。
> 
> このサービスが出しているXMLをFILTERXML関数が理解できていないみたいです。
> 
> =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
> で取得したXMLで
> 
> http://finds.jp/ts";
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> 
> の部分を
> 
> 
> 
> に変更するとFILTERXML関数は値を読み込みました。
> (式は=FILTERXML(A1,"//geocode/result/latitude")に変えましたが)
> 
> この現象が、XMLを出している側の問題かCalcの関数の方に問題があるのか、わ
> たしはよく分かりません。
> 
> 参考までに。
> 
> (2014年06月20日 19:10), Jun NOGATA wrote:
>> こんにちは。野方です。
>>
>> LibreOffice 4.2から入ったCalcのWEBSERVICE関数を使って、Web APIにアクセ
>> スして、返ってきたXMLからFILTERXML関数を使って値を取り出そうとしていま
>> すが、うまく取り出すことができません。
>>
>> 使っているWeb APIは、こちらです。
>>
>> - 簡易ジオコーディングサービス / Finds.jp Webサービス: http://www.finds.jp/wsdocs/geocode/
>>
>> 市町村コードを指定してアクセスすると緯度経度がXMLで返ってきます。
>> 大阪市北区(27127)なら、こんな感じでアクセスすると緯度経度が返ってきます。
>>
>> - http://www.finds.jp/ws/geocode.php?mcode=27127
>>
>> 試しにA1セルとA2セルに
>>
>> A1セル =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
>> A2セル =FILTERXML(A1,"//latitude")
>>
>> と書いて試しましたが、#VALUEエラーになってしまいます。
>>
>> XPathをあまり理解していないので書き方が悪いのかと思い、Livedoorのお天気
>> RSSを使って試したところ
>>
>> - http://weather.livedoor.com/forecast/rss/area/27.xml
>>
>> A1セル =WEBSERVICE("http://weather.livedoor.com/forecast/rss/area/27.xml";)
>> A2セル =FILTERXML(A1,"//item[3]/title")
>>
>> こちらは、うまくtitle要素の値を取り出すことができました。
>>
>> ちょっと、よくわからなくなってきたのですが、FILTERXMLのXpathをどういう
>> 風な書き方をすると値を取り出すことができるのでしょうか。
>> 「これを見ろー」でもいいので、なにか情報ありましたら教えてください。
>>
> 
> 


-- 
野方 純 (NOGATA,Jun) - mail: noga...@gmail.com
 - web: http://www.nofuture.tv/diary/

-- 
Unsubscribe instructions: E-mail to users+unsubscr...@ja.libreoffice.org
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/users/
All messages sent to this list will be publicly archived and cannot be deleted



[ja-users] Calc:西洋諸言語用フォントとアジア諸言語用フォントが違うフォントのとき数値を変更するとアジア諸言語用フォントに変化する

2014-06-20 スレッド表示 hemero
Calc:西洋諸言語用フォントとアジア諸言語用フォントが違うフォントのとき数
値を変更するとアジア諸言語用フォントに変化する

Windows 7 64bit

LibreOffice 4.2.5.2 & 4.3.0.1

セルスタイルで、西洋諸言語用フォントとアジア諸言語用フォントとを
異なるフォントにしています。

たとえば、西洋諸言語用フォントをメイリオ、
アジア諸言語用フォントをMS Pゴシック
にするとします。

数値のときには西洋諸言語用フォントで表示されています。
しかし、数字の値が入力されているセルに新しい数値を入力して確定すると、
数値がアジア諸言語用フォントに変化してしまいます。

しかし、再描画されると、元に戻るようで、セルを選択すると、
数値が西洋諸言語用フォントに戻ります。

しかも、どうも数値が2文字以下だと数値を変更してEnterで確定すると
西洋諸言語用フォントのままなのですが、
3文字以上あると、数値を変更してEnterしてもアジア諸言語用フォントになって
しまいます。。
その文字数はばらつきがあり、3文字で大丈夫のときもあり、4文字入れるとアジ
ア諸言語用フォントになったりします。

数値が2文字以下でも数値を変更して
別のセルをクリックして確定するとアジア諸言語用フォントになります。

これは再描画されると元に戻るので、印刷には影響はないと思いますが、

さらに、

=IF(ISBLANK(D2),"",VLOOKUP(D2,$K$2:$L$31,2))というようにして、
横のセルが空白になっているときは、空白にして、
横のセルが入力されたら数値を表示するようにしている場合にも
横のセルを入力すると
数値がアジア諸言語用フォントになってしまいます。

この場合は再描画では直らず、セルをコピーして貼り付けすると
西洋諸言語用フォントに戻ります。

この部分では西洋諸言語用フォントとアジア諸言語用フォントを
同じにするというに対処してます。。。

確か3.6ではなかったことだった気がしますが、4.1.3にしたら出現し、4.2.5で
も発生しています。。。

-- 
Unsubscribe instructions: E-mail to users+unsubscr...@ja.libreoffice.org
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/users/
All messages sent to this list will be publicly archived and cannot be deleted



[ja-users] Re: [ja-users] Calc: FILTERXML関数を使って値を取り出すには?

2014-06-20 スレッド表示 Eizi TOYODA
filterxml
は使ったことがありませんが、症状からすると、名前空間を指定していない要素がXpathにあっても、ドキュメントの同名の要素とは別物扱いされているように思います。

FILTERXML(A1,"//*[name()='latitude']")

等としたら結果が返りませんかね。

豊田英司
from android phone
2014/06/21 9:20 "Jun NOGATA" :

> こんにちは。野方です。
>
> (2014年06月21日 07:25), matuaki wrote:
> > matuakiです。
> >
> > このサービスが出しているXMLをFILTERXML関数が理解できていないみたいです。
> >
> > =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
> > で取得したXMLで
> >
> > http://finds.jp/ts";
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> >
> > の部分を
> >
> > 
> >
> > に変更するとFILTERXML関数は値を読み込みました。
> > (式は=FILTERXML(A1,"//geocode/result/latitude")に変えましたが)
>
> おお!ホントですね!
> 普通に上からたどっていっても、きちんと緯度が取り出せました。
>
> XML名前空間(xmlns)が怪しそうというので、一つずつ消してみたところ
> 「xmlns="http://finds.jp/ts"」が入ってるとパースできないようです。
>
> もしかして、名前空間は指定してあるけど、そこにスキーマがないから、
> それに従って処理できない?
>
>
> > この現象が、XMLを出している側の問題かCalcの関数の方に問題があるのか、わ
> > たしはよく分かりません。
>
> 「XML名前空間を指定していると、それにしたがって処理しようとするので、元
> のXMLの指定が間違ってるとコケる」と仮説を立ててみたのですが、合ってるか
> どうかは改めてdiscussで尋ねたほうがいいかもですね。
>
> ありがとうございます。
>
>
>
> (2014年06月21日 07:25), matuaki wrote:
> > matuakiです。
> >
> > このサービスが出しているXMLをFILTERXML関数が理解できていないみたいです。
> >
> > =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
> > で取得したXMLで
> >
> > http://finds.jp/ts";
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> >
> > の部分を
> >
> > 
> >
> > に変更するとFILTERXML関数は値を読み込みました。
> > (式は=FILTERXML(A1,"//geocode/result/latitude")に変えましたが)
> >
> > この現象が、XMLを出している側の問題かCalcの関数の方に問題があるのか、わ
> > たしはよく分かりません。
> >
> > 参考までに。
> >
> > (2014年06月20日 19:10), Jun NOGATA wrote:
> >> こんにちは。野方です。
> >>
> >> LibreOffice 4.2から入ったCalcのWEBSERVICE関数を使って、Web APIにアクセ
> >> スして、返ってきたXMLからFILTERXML関数を使って値を取り出そうとしていま
> >> すが、うまく取り出すことができません。
> >>
> >> 使っているWeb APIは、こちらです。
> >>
> >> - 簡易ジオコーディングサービス / Finds.jp Webサービス:
> http://www.finds.jp/wsdocs/geocode/
> >>
> >> 市町村コードを指定してアクセスすると緯度経度がXMLで返ってきます。
> >> 大阪市北区(27127)なら、こんな感じでアクセスすると緯度経度が返ってきます。
> >>
> >> - http://www.finds.jp/ws/geocode.php?mcode=27127
> >>
> >> 試しにA1セルとA2セルに
> >>
> >> A1セル =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
> >> A2セル =FILTERXML(A1,"//latitude")
> >>
> >> と書いて試しましたが、#VALUEエラーになってしまいます。
> >>
> >> XPathをあまり理解していないので書き方が悪いのかと思い、Livedoorのお天気
> >> RSSを使って試したところ
> >>
> >> - http://weather.livedoor.com/forecast/rss/area/27.xml
> >>
> >> A1セル =WEBSERVICE("
> http://weather.livedoor.com/forecast/rss/area/27.xml";)
> >> A2セル =FILTERXML(A1,"//item[3]/title")
> >>
> >> こちらは、うまくtitle要素の値を取り出すことができました。
> >>
> >> ちょっと、よくわからなくなってきたのですが、FILTERXMLのXpathをどういう
> >> 風な書き方をすると値を取り出すことができるのでしょうか。
> >> 「これを見ろー」でもいいので、なにか情報ありましたら教えてください。
> >>
> >
> >
>
>
> --
> 野方 純 (NOGATA,Jun) - mail: noga...@gmail.com
>  - web: http://www.nofuture.tv/diary/
>
> --
> Unsubscribe instructions: E-mail to users+unsubscr...@ja.libreoffice.org
> Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
> List archive: http://listarchives.libreoffice.org/ja/users/
> All messages sent to this list will be publicly archived and cannot be
> deleted
>
>

-- 
Unsubscribe instructions: E-mail to users+unsubscr...@ja.libreoffice.org
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/users/
All messages sent to this list will be publicly archived and cannot be deleted