aaaaTrzeba żyć, a nie tylko istnieć.aaaa
On 30 May 2000 20:49:04 GMT, Bart Ogryczak
<B.Ogryc@students.mimuw.edu.pl.no.spamwrote:
Dnia Tue, 30 May 2000 21:14:35 +0200, Marcin Jagodzinski zeznaje:
| On 30 May 2000 18:00:53 GMT, ci@patek.bildex.net.pl (Sławomir Białek)
| wrote:
| | I taki dość... niezwykły.
| rozwiń proszę, bo to w sumie istotne :)
| Nie będę rozwijał bo ani dokładnie nie pamiętam, ani nie jestem specjalistą
| od SGML-a. Przypominam sobie tylko, że były tam teksty o ściśle określonej
| długości. Wyglądało to jak fixed-length format, w którym delimiterami są
| tagi SGML.
| Nie wiem, jaką możliwość ekspresji mają DTD do SGML-a. Ale np. w DTD XML-a
| nie można powiedzieć, że np. <nipmoże zawierać tekst o dokładnie 13
| znakach. Akurat przykład nie jest najszczęśliwszy, bo to jest oczywiste.
W HTMLu (a więc aplikacji SGML) masz np. zapis coloru jako RGB.
Też jest fixed-length. # i 6 cyfr hexadecymalnych.
Ale jest to wartość atrybutu, nie zawartość elementu - to istotna różnica.
Składnia całej masy atrybutów w różnych DTDs jest definiowana poza nimi
przez odrębne specyfikacje (URLe w HREF, CSS w STYLE, JavaScript w onLoad
etc., jeśli trzymać się HTMLa), ale sam meta-język nie ma możliwości
wyrażenia formalinych restrykcji na bazową zawartość elementów - co najwyżej
tryb jej traktowania. Możesz więc wybierać między CDATA, PCDATA etc., ale
nie możesz zażyczyć sobie, żeby np. zawartość elementu NIP nie była dłuższa
niż 13 znaków.
bart
On 31 May 2000 10:29:37 GMT, Bart Ogryczak wrote:
| Ale jest to wartość atrybutu, nie zawartość elementu - to istotna różnica.
| Składnia całej masy atrybutów w różnych DTDs jest definiowana poza nimi
| przez odrębne specyfikacje (URLe w HREF, CSS w STYLE, JavaScript w onLoad
| etc., jeśli trzymać się HTMLa), ale sam meta-język nie ma możliwości
| wyrażenia formalinych restrykcji na bazową zawartość elementów - co najwyżej
| tryb jej traktowania. Możesz więc wybierać między CDATA, PCDATA etc., ale
| nie możesz zażyczyć sobie, żeby np. zawartość elementu NIP nie była dłuższa
| niż 13 znaków.
Wszystko prawda, ale <tag color="#FFF"przejdzie przez walidację
względem DTD, ale nie zapewnia to poprawnej interpretacji. Cokolwiek
miała by znaczyć poprawna interpretacja w takim przypadku. Z tego co
rozumiem, podobnie jest z Płatnikiem. Przejście walidacji nie gwarantuje
poprawności interpretacji.
To nie jest "podobnie". Atrybut COLOR odwoluje sie do zewnetrznej notacji,
niezaleznej od składni HTMLa. "DTD" Płatnika próbuje narzucać meta-językowi
ograniczenia, których w nim wyrazić nie można. Porównujesz błąd w tworzeniu
dokumentu do błędnych założeń samego formatu.
bart
Dnia 31 May 2000 09:00:10 GMT, Grzegorz Staniak zeznaje:
| Nie będę rozwijał bo ani dokładnie nie pamiętam, ani nie jestem specjalistą
| od SGML-a. Przypominam sobie tylko, że były tam teksty o ściśle określonej
| długości. Wyglądało to jak fixed-length format, w którym delimiterami są
| tagi SGML.
| Nie wiem, jaką możliwość ekspresji mają DTD do SGML-a. Ale np. w DTD XML-a
| nie można powiedzieć, że np. <nipmoże zawierać tekst o dokładnie 13
| znakach. Akurat przykład nie jest najszczęśliwszy, bo to jest oczywiste.
| W HTMLu (a więc aplikacji SGML) masz np. zapis coloru jako RGB.
| Też jest fixed-length. # i 6 cyfr hexadecymalnych.
Ale jest to wartość atrybutu, nie zawartość elementu - to istotna różnica.
Składnia całej masy atrybutów w różnych DTDs jest definiowana poza nimi
przez odrębne specyfikacje (URLe w HREF, CSS w STYLE, JavaScript w onLoad
etc., jeśli trzymać się HTMLa), ale sam meta-język nie ma możliwości
wyrażenia formalinych restrykcji na bazową zawartość elementów - co najwyżej
tryb jej traktowania. Możesz więc wybierać między CDATA, PCDATA etc., ale
nie możesz zażyczyć sobie, żeby np. zawartość elementu NIP nie była dłuższa
niż 13 znaków.
Wszystko prawda, ale <tag color="#FFF"przejdzie przez walidację
względem DTD, ale nie zapewnia to poprawnej interpretacji. Cokolwiek
miała by znaczyć poprawna interpretacja w takim przypadku. Z tego co
rozumiem, podobnie jest z Płatnikiem. Przejście walidacji nie gwarantuje
poprawności interpretacji.
bart
Krzysztof Naworyta schrieb:
| Nadal w tym Twoim pliku widzę sztywne odwołanie do struktury XML:
| <xsl:attribute name="SymbWal"
| <xsl:value-of select="symbol_waluty"/
| ^^^^^^^^^^^^^^^
Osylam jeszcze raz do XPath. Jak poczytasz to nie bedziesz
chcial inaczej adresowac elementow pliku xml ;-)
Ale - mimo wszystko - jeszcze raz:
mam plik *.DTD ? mam !
Jest w nim opis struktury ? jest !
np http://www.nbp.pl/kursy/xml/abch.dtd:
(...)
<!ATTLIST pozycja numer CDATA #IMPLIED
<!ELEMENT nazwa_kraju (#PCDATA)
<!ELEMENT symbol_waluty (#PCDATA)
<!ELEMENT nazwa_waluty (#PCDATA)
<!ELEMENT przelicznik (#PCDATA)
<!ELEMENT kod_waluty (#PCDATA)
<!ELEMENT odnosnik (#PCDATA)
<!ELEMENT kurs_sredni (#PCDATA)
<!ELEMENT kurs_kupna (#PCDATA)
<!ELEMENT kurs_sprzedazy (#PCDATA)
Jest wszystko wymienione ? Jest! Mogę to raz przeczytać, jakoś stablicować i potem
uzyć podczas ładowania danych do Access'a ? Tego to już nie wiem (pomijając zwykłą
obróbke tekstu)
No i nadal nie bedziesz wiedzial co kryje sie pod 'yourElemTable(1)'
(znaczy Twoj kod VB jest glupi i nie bedzie wiedzal). Wiec co za
roznica (z punktu widzenia VB) czy nazwa kraju kryje sie pod '1'
czy 'nazwa_kraju' ?
Wez pod uwage, ze kolejnosc elementow moze byc dowolna !
To co podał Rafał 15 dni temu wydaje mi sie proste, przejrzyste i działa.
Ale zamiast kodu:
[...]
marzy mi się, że jest jakaś metoda tej biblioteki, która pozwoliłaby na taki zapis:
(szic koncepcyjny)
Dim a()
{ Wsadź do a() to co jest w DTD } ' <<<<
A to nie bedzie takie trywialne. Wyobraz sobie plik xml
gdzie poziomy zagniezdzenia sa 10. A co z atrybutami
elementow ?
i teraz:
Set xmlpos = xmlroot.getElementsByTagName("pozycja")
For Each xmlelem In xmlpos
For i=1 to UBound(a)
Debug.Print a(i) & " : " & _
xmlelem.selectSingleNode(a(i)).text
Next
Dim i%
For i = 0 To xmlelem.childNodes.Length - 1
Debug.Print xmlelem.childNodes.Item(i).nodeName & ": ";
Debug.Print xmlelem.childNodes.Item(i).text
Next i
Debug.Print "-------------------------------------------"
Next xmlelem
Teraz ladnie ;-) A F1 nie czytal ;-)
Jak jutro webmaster zmieni w obydwóch plikach "kurs_sprzedazy" na "sprzedaz_kurs"
to mnie to strzyka. Przeczytam DTD i załaduję dane tak czy siak, bez modyfikowania
kodu !
To niby wzialbys yourElemTable(9) i wierzylbys, ze masz 'kurs_sprzedazy'
(albo i 'sprzedaz_kurs', albo 'jak_go_zwal_tak_go_zwal'). A jak admin
zmieni kolejnosc elementow ?
Czy to naprawdę tak trudno zrozumieć o co pytam ???
Nie moge zrozumiec dlaczego chesz (az tak) duzo wage przywiazywac
do dtd ?
Nawet jeśli Access'XP pozwala na import/łączenie z XML w sposób dużo bardziej prosty
(? tak czytałem), ...
Dobra, ale ogranicza sie to tylko do danych xml, ktorych strukture
narzuca/definiuje MS. To jest ok, tak dkugo jak mamy do czynnienia
z danymi tabelarycznymi (recordset). Pliki o dowolnej strukturze
pozostana dalej domena MSXML-API.
Ciao, Rafal
zanotowane.pldoc.pisz.plpdf.pisz.plbrytfanna.keep.pl