-
1. Data: 2010-01-14 20:32:08
Temat: Algorytm formatowania tekstu XML
Od: "Bastion" <b...@m...pl>
Witam
Poszukuje algorytmu, kodu, pseudokodu
do formatowania XML.
dokladnie chodzi np. o zmiane tekstu
<dochodopodatkowany><P_36>1528.00</P_36><P_37>1528.0
0</P_37></dochodopodatkowany>
na
<dochodopodatkowany>
<P_36>1528.00</P_36>
<P_37>1528.00</P_37>
</dochodopodatkowany>
Googluje:
-algorithm XML formatted
-algorithm XML formatting
i znalazlem tylko to
http://4programmers.net/Delphi/Gotowce/Formatowanie_
kodu_XML_bez_u%C5%BCycia_dodatkowych_bibliotek
Algorytm wyglada na niepotrzebnie skomplikowany, odnosze wrazenie
ze mozna to napisac znacznie prosciej np. zamiast zapamietywania
wartosci na stosie mozna wykorzystac rekurencje.
Szukam czegos maksymalnie prostego.
Pozdrawiam
-
2. Data: 2010-01-14 20:49:50
Temat: Re: Algorytm formatowania tekstu XML
Od: Jacek Czerwinski <...@...z.pl>
Bastion pisze:
> Witam
> Poszukuje algorytmu, kodu, pseudokodu
> do formatowania XML.
> dokladnie chodzi np. o zmiane tekstu
> <dochodopodatkowany><P_36>1528.00</P_36><P_37>1528.0
0</P_37></dochodopodatkowany>
> na
> <dochodopodatkowany>
> <P_36>1528.00</P_36>
> <P_37>1528.00</P_37>
> </dochodopodatkowany>
>
> Googluje:
> -algorithm XML formatted
> -algorithm XML formatting
> i znalazlem tylko to
> http://4programmers.net/Delphi/Gotowce/Formatowanie_
kodu_XML_bez_u%C5%BCycia_dodatkowych_bibliotek
> Algorytm wyglada na niepotrzebnie skomplikowany,
I zawodny. Żadnej obsługi znaków specjalnych, CDATA itd, szukanie
pozycji "<" w ciągach. Koszmar. Jak się Jasiowi wydawało.
Fakt "nie użycia bibliotek" dla mnie swiadczy raczej o niskiej
profesjonalnej przydatności programisty, niz o jego "hakerstwie", ale sa
kręgi gdzie wynajdywanie koła jest odbierane pozytywnie (choćby wyszło
nieco eliptyczne).. krąg Delphi tez do niego chyba należy.
Zarówno dla DOM jak i SAX istnieje proste rozwiązanie.
W SAX na kazdym begin-handler inkrementujesz, na end-handler dekrementujesz.
w DOM przechodząc się po drzewie też poziom zagłebienia łatwo uzyskasz.
Możesz dostosowac te uwagi do języka w ktorym to robisz i do filozfiii
potraktowania XML w projekcie.
Moszesz pogooglać za pretty printer względnie beautifier
-
3. Data: 2010-01-14 22:50:51
Temat: Re: Algorytm formatowania tekstu XML
Od: "Bastion" <b...@m...pl>
Użytkownik "Jacek Czerwinski" <...@...z.pl> napisał w wiadomości
news:hio01g$p4u$1@news.onet.pl...
> Fakt "nie użycia bibliotek" dla mnie swiadczy raczej o niskiej
> profesjonalnej przydatności programisty, niz o jego "hakerstwie", ale sa
> kręgi gdzie wynajdywanie koła jest odbierane pozytywnie (choćby wyszło
> nieco eliptyczne).. krąg Delphi tez do niego chyba należy.
Przede wszystkim, dzieki za szybka odpowiedz
("kto pomaga szybko-pomaga 2x");)
Mam za zadanie sformatowanie tekstu XML za pomoca
procedury skladowanej w SQL. Zalozenia:
- string XML jest poprawny skladniowo
- struktura stringa XML jest zdefioniowana w zewnetrzym pliku *.xsd.
Czyli
- w stringu XML nie bedzie konstrukcji "CDATA"
- wydaje mi sie ze mozna to zamknac w 50- 70 linijkach
kodu.
- szukam gotowca bo termin jest na "wczoraj"
Czuje ze mozna to zrobic prosta rekurencja,
dokladnie tak jak pisales:
"W SAX na kazdym begin-handler inkrementujesz, na end-handler
dekrementujesz.
w DOM przechodząc się po drzewie też poziom zagłebienia łatwo uzyskasz."
Jezeli ktos ma prostego gotowca to prosze o zrodelko.
-
4. Data: 2010-01-15 07:09:02
Temat: Re: Algorytm formatowania tekstu XML
Od: Maciej Pilichowski <P...@g...com>
On Thu, 14 Jan 2010 21:32:08 +0100, "Bastion" <b...@m...pl> wrote:
>Poszukuje algorytmu, kodu, pseudokodu
>do formatowania XML.
>dokladnie chodzi np. o zmiane tekstu
><dochodopodatkowany><P_36>1528.00</P_36><P_37>1528.
00</P_37></dochodopodatkowany>
>na
><dochodopodatkowany>
> <P_36>1528.00</P_36>
> <P_37>1528.00</P_37>
></dochodopodatkowany>
Z tego co widze, to tresc jest taka sama. Nie chcialoby mi sie nawet
googlach -- napisalbym pchelke w C#, ktora czyta XML-a (jedna
linijka), ustawia flage formatting intendent (2-linijka), zapisuje to
do XML-a (3 linijka).
milego dnia, hej
-
5. Data: 2010-01-15 10:47:40
Temat: Re: Algorytm formatowania tekstu XML
Od: "Wojciech \"Spook\" Sura" <w...@s...medi.com.pl>
Jacek Czerwinski wrote:
> Fakt "nie użycia bibliotek" dla mnie swiadczy raczej o niskiej
> profesjonalnej przydatności programisty, niz o jego "hakerstwie", ale
> sa kręgi gdzie wynajdywanie koła jest odbierane pozytywnie (choćby
> wyszło nieco eliptyczne).. krąg Delphi tez do niego chyba należy.
Skąd takie przekonanie?
Piszę w Delphi i pierwszym, co przyszło mi do głowy było zastosowanie
MSXMLa - właśnie po to, żeby niepotrzebnie nie wynajdywać koła.
> w DOM przechodząc się po drzewie też poziom zagłebienia łatwo
> uzyskasz.
Tylko po co to robić ręcznie?
var XMLDoc : TXMLDocument;
begin
XMLDoc:=TXmlDocument.Create(self);
XMLDoc.Options:=[doNodeAutoIndent];
(...)
end;
Wystarczy teraz jednym poleceniem sklonować główną gałąź do tak utworzonego
dokumentu i zapisać.
Pozdrawiam -- Spook.
-
6. Data: 2010-01-20 15:59:14
Temat: Re: Algorytm formatowania tekstu XML
Od: wloochacz <w...@n...dgbit.spameromnie.pl>
Bastion pisze:
> Użytkownik "Jacek Czerwinski" <...@...z.pl> napisał w wiadomości
> news:hio01g$p4u$1@news.onet.pl...
>> Fakt "nie użycia bibliotek" dla mnie swiadczy raczej o niskiej
>> profesjonalnej przydatności programisty, niz o jego "hakerstwie", ale sa
>> kręgi gdzie wynajdywanie koła jest odbierane pozytywnie (choćby wyszło
>> nieco eliptyczne).. krąg Delphi tez do niego chyba należy.
>
> Przede wszystkim, dzieki za szybka odpowiedz
> ("kto pomaga szybko-pomaga 2x");)
> Mam za zadanie sformatowanie tekstu XML za pomoca
> procedury skladowanej w SQL. Zalozenia:
Fajny pomysł, tylko że zupełnie bez sensu...
Po co baza danych ma formatować dane? Baza ma przechowywać dane, a nie
formatować; daty też zapisujecie w char(10), sprowadzając do postaci
"yyyy-mm-dd"?
Przecież KAŻDE dane, pochodzące z bazy konsumuje jakaś aplikacja
(uogólniając oczywiście, bo tą aplikacją może być WS) napisana w jakimś
języku. A każdy język potrafi sformatować XMLa, choćby i w locie. Poza
tym sformatowany XML zajmuje więcej miejsca, co ma znaczenie dla bazy
danych (wprost proporcjonalnie do ilości informacji).
Napisz jak baza danych, bo niektóre z nich mają wbudowaną obsługę
dokumentów XMLa (np. DB2 czy MSSQL). Chyba do każdej bazy danych można
tez napisać funkcję rozszerzającą w języku wysokiego poziomu i użyć jej
w SQL; w innych można pisać wprost w maszynie wirtualnej osadzonej w
silniku bazodanowym (.NET lub Java, wszystko zależy od tego JAKA baza
danych).
> - string XML jest poprawny skladniowo
> - struktura stringa XML jest zdefioniowana w zewnetrzym pliku *.xsd.
> Czyli
> - w stringu XML nie bedzie konstrukcji "CDATA"
A to XSD zabrania używanie CDATA?
Zresztą, to nie ma znaczenia przy formatowaniu.
> - wydaje mi sie ze mozna to zamknac w 50- 70 linijkach
> kodu.
Źle Ci sie wydaje, zwłaszcza że to miałoby jeszcze walidować treść pod
kątem schematu za pomocą czystego SQLa.
Po po co wspomniałeś o XSD?
> - szukam gotowca bo termin jest na "wczoraj"
A więc użyj gotowca - zewnętrznej biblioteki do przetwarzania dokumentów
XML, pod warunkiem że Twoja baza danych już nie posiada czegoś takiego...
/ciach/
--
wloochacz
-
7. Data: 2010-01-20 21:36:59
Temat: Re: Algorytm formatowania tekstu XML
Od: "Bastion" <b...@m...pl>
Użytkownik "wloochacz" <w...@n...dgbit.spameromnie.pl> napisał w wiadomości
news:hj798r$hd7$1@inews.gazeta.pl...
> Bastion pisze:
> Fajny pomysł, tylko że zupełnie bez sensu...
Temat formatowanie XML-a w SQL-u jest juz nieaktualny ale chetnie
podyskutuje;)
> Po co baza danych ma formatować dane? Baza ma przechowywać dane, a nie formatować;
daty też zapisujecie w char(10), sprowadzając
> do postaci "yyyy-mm-dd"?
> Przecież KAŻDE dane, pochodzące z bazy konsumuje jakaś aplikacja (uogólniając
oczywiście, bo tą aplikacją może być WS) napisana w
> jakimś języku. A każdy język potrafi sformatować XMLa, choćby i w locie. Poza tym
sformatowany XML zajmuje więcej miejsca, co ma
> znaczenie dla bazy danych (wprost proporcjonalnie do ilości informacji).
1) Baza nie przechowuje sformatowanych danych, nie przechowuje nawet
danych w formacie XML.
2) Zapytanie do procedury wbudowanej zwraca niesformatowany tekst XML.
3) W aplikacji wywolujacej zapytanie (funkcje wbudowana SQL)
nie chce uzywac zewnetrznych bibiotek do formatowania XML poniewaz:
Od wielu lat zalozeniem aplikacji nad ktora pracuje jest
maksymalna:
- flexybilnosc i konigurawalnosci zapeweniona przez jezyk skryptowy SQL.
- oddzielenie warstwy logiki biznesowej (SQL) od warstwy wizualizacji(aplikacja i
pliki binarne).
> Napisz jak baza danych, bo niektóre z nich mają wbudowaną obsługę dokumentów XMLa
(np. DB2 czy MSSQL).
Sybase ASA w wersji 6,7 lub 9(u klientow chodza rozne wersje),
faktycznie w Sybase 9 jest prosta obsluga XML ale na 100% nie ma formatowania XML.
>Chyba do każdej bazy danych można tez napisać funkcję rozszerzającą w języku
wysokiego poziomu i użyć jej w SQL; w innych można
>pisać wprost w maszynie wirtualnej osadzonej w silniku bazodanowym (.NET lub Java,
wszystko zależy od tego JAKA baza danych).
Tak Sybase wersja 9(w przeciwienstwie do ver 6 i 7)
obsluguje NET i Java ale zalozenia/wymagania sa takie,
ze tego nie uzywamy.
> Po po co wspomniałeś o XSD?
??? Nie rozumiem, prawda?
;)
> A więc użyj gotowca - zewnętrznej biblioteki do przetwarzania dokumentów XML, pod
warunkiem że Twoja baza danych już nie posiada
> czegoś takiego...
Reasumujac, realia/zalozenie/wymagania sa takie ze
- logika biznesowa jest w skryptach SQL.
- wizualizacja w plikch binarnych(*.exe,*.dll,*.bpl)
- nie uzywamy zewnetrzych bibliotek jezeli nie ma takiej koniecznosci (tzw. brzytwa
ockhama)
Pozdrawiam
-
8. Data: 2010-01-20 22:02:36
Temat: Re: Algorytm formatowania tekstu XML
Od: wloochacz <w...@n...dgbit.spameromnie.pl>
Bastion pisze:
> Użytkownik "wloochacz" <w...@n...dgbit.spameromnie.pl> napisał w wiadomości
news:hj798r$hd7$1@inews.gazeta.pl...
>> Bastion pisze:
>> Fajny pomysł, tylko że zupełnie bez sensu...
>
> Temat formatowanie XML-a w SQL-u jest juz nieaktualny ale chetnie
> podyskutuje;)
No to "jadziem" ;)
>> Po co baza danych ma formatować dane? Baza ma przechowywać dane, a nie formatować;
daty też zapisujecie w char(10), sprowadzając
>> do postaci "yyyy-mm-dd"?
>> Przecież KAŻDE dane, pochodzące z bazy konsumuje jakaś aplikacja (uogólniając
oczywiście, bo tą aplikacją może być WS) napisana w
>> jakimś języku. A każdy język potrafi sformatować XMLa, choćby i w locie. Poza tym
sformatowany XML zajmuje więcej miejsca, co ma
>> znaczenie dla bazy danych (wprost proporcjonalnie do ilości informacji).
>
> 1) Baza nie przechowuje sformatowanych danych, nie przechowuje nawet
> danych w formacie XML.
To na cholerę formatowanie XMLa za pomocą T-SQLa?
Bo to jest niby logika, a ta ma być zaszyta w SQL?
Jakbym nie patrzył, to formatowanie jest prezentacją, a nie logiką...
> 2) Zapytanie do procedury wbudowanej zwraca niesformatowany tekst XML.
Nie rozumiem.
Co to znaczy "zapytanie do procedury" - znaczy, co procedura zwraca
niesformatowany XML? Czy do jej parametru wejściowego wchodzi
niesformatowany XML?
> 3) W aplikacji wywolujacej zapytanie (funkcje wbudowana SQL)
> nie chce uzywac zewnetrznych bibiotek do formatowania XML poniewaz:
> Od wielu lat zalozeniem aplikacji nad ktora pracuje jest
> maksymalna:
> - flexybilnosc i konigurawalnosci zapeweniona przez jezyk skryptowy SQL.
Ciekawym strasznie na czym owa "flexybilnosc i konigurawalnosc" polega.
Moim zdaniem, "flexybilnosc i konigurawalnosc" w przypadku użycia T-SQLa
kończy się (i zaczyna) na dwóch założeniach:
1) SQL to język deklaratywny
2) SQL to język skryptowy
W mojej osobistej opinii to zdecydowanie za mało, aby zapewnić
"flexybilnosc i konigurawalnosc" na odpowiednim poziomie.
> - oddzielenie warstwy logiki biznesowej (SQL) od warstwy wizualizacji(aplikacja i
pliki binarne).
To jest sztuczne i złudne!
Tu nie ma żadnej logiki, wszystko jest w bazie danych; ciekawym czy
walidację danych na formularzach tez robicie za pomocą SQLa? Oczywiście
można, tak samo jak można uczesać się wykałaczką...
Widziałem taki system, który opierał się na podobnych założeniach -
wszystko w SQL i wszystko za pomocą procedur. Tylko, że tam "autor"
zapomniał iz SQL jest zoptymalizowany do przetwarzania zbiorów, a nie
rekordów. Taka dygresja...
>> Napisz jak baza danych, bo niektóre z nich mają wbudowaną obsługę dokumentów XMLa
(np. DB2 czy MSSQL).
>
> Sybase ASA w wersji 6,7 lub 9(u klientow chodza rozne wersje),
> faktycznie w Sybase 9 jest prosta obsluga XML ale na 100% nie ma formatowania XML.
>
>> Chyba do każdej bazy danych można tez napisać funkcję rozszerzającą w języku
wysokiego poziomu i użyć jej w SQL; w innych można
>> pisać wprost w maszynie wirtualnej osadzonej w silniku bazodanowym (.NET lub Java,
wszystko zależy od tego JAKA baza danych).
> Tak Sybase wersja 9(w przeciwienstwie do ver 6 i 7)
> obsluguje NET i Java ale zalozenia/wymagania sa takie,
> ze tego nie uzywamy.
>
>> Po po co wspomniałeś o XSD?
>
> ??? Nie rozumiem, prawda?
> ;)
>
>> A więc użyj gotowca - zewnętrznej biblioteki do przetwarzania dokumentów XML, pod
warunkiem że Twoja baza danych już nie posiada
>> czegoś takiego...
>
> Reasumujac, realia/zalozenie/wymagania sa takie ze
> - logika biznesowa jest w skryptach SQL.
Zdefiniuj - "logika biznesowa".
> - wizualizacja w plikch binarnych(*.exe,*.dll,*.bpl)
OK, a powiedz w jaki sposób odwołujecie się do tej bazy?
Wołacie bezpośrednio obiekty bazy za pomocą SQLa (select from; exec
proc, etc.), czy macie jakiś ładniutki wrapper na tę bazę?
> - nie uzywamy zewnetrzych bibliotek jezeli nie ma takiej koniecznosci (tzw. brzytwa
ockhama)
A nie zdarza się Wam popadać w skrajność? Przykład z formatowaniem XLA
za pomoca SQL jest sztandarowym przykładem na antywzorzec metodologiczny;
"[...] Odkrywanie kwadratowego koła (ang. Reinventing the square wheel)
Rozwiązywanie problemu w zły sposób, podczas gdy istnieją skuteczne i
sprawdzone rozwiązania. Na przykład tworzenie własnego systemu
bazodanowego, zamiast wykorzystania istniejących darmowych rozwiązań, z
dużym prawdopodobieństwem lepszych niż sami jesteśmy w stanie stworzyć."
Za
http://pl.wikipedia.org/wiki/Antywzorzec_projektowy
--
wloochacz
-
9. Data: 2010-01-21 21:40:07
Temat: Re: Algorytm formatowania tekstu XML
Od: "Bastion" <b...@m...pl>
Użytkownik "wloochacz" <w...@n...dgbit.spameromnie.pl> napisał w wiadomości
news:hj7ui8$ck0$1@inews.gazeta.pl...
> To na cholerę formatowanie XMLa za pomocą T-SQLa?
To nie jest Transact-SQL tylko Watcom-SQL
> Bo to jest niby logika, a ta ma być zaszyta w SQL?
> Jakbym nie patrzył, to formatowanie jest prezentacją, a nie logiką...
Z tym mozna dyskutowac ale raczej formatowanie XML
zaliczylbym do logiki biznesowej.
> Nie rozumiem.
> Co to znaczy "zapytanie do procedury" - znaczy, co procedura zwraca niesformatowany
XML? Czy do jej parametru wejściowego wchodzi
> niesformatowany XML?
Procedura otrzymuje jako parametr id rekordu i jako wynik zwraca niesformatowany XML
> Ciekawym strasznie na czym owa "flexybilnosc i konigurawalnosc" polega. Moim
zdaniem, "flexybilnosc i konigurawalnosc" w przypadku
> użycia T-SQLa kończy się (i zaczyna) na dwóch założeniach:
> 1) SQL to język deklaratywny
> 2) SQL to język skryptowy
> W mojej osobistej opinii to zdecydowanie za mało, aby zapewnić "flexybilnosc i
konigurawalnosc" na odpowiednim poziomie.
Moze uzylem zbyt daleko idacego uproszczenia
- wyglad formatek
- reakcja na interakcje z uzytkownikiem (np. klawisze: drukuj, OK, anuluj, dane
wyswietlane w
DBComboBox czy DBGried)
- uprawnienia uzytkownika(wykonywanie raportow i zestawien, zmiany w struktorze bazy)
- rozmiary formatki i wyglad raportow, ustawienia drukarek
jest zalezna od danych zaszytych w bazie w przewazajacej czesci te dane
to skrypty W-SQL ktore sa wykonywane w warstwie biznesowej.
Czy to jest fleksybilne i konfiguralne?
Moim zdaniem tak, 95-97% wygladu i zachowania systemy mozna zmienic bez
przekopilowywania.
Wystarczy prosta konsola do updatowania ustawien w bazie.
> To jest sztuczne i złudne!
> Tu nie ma żadnej logiki, wszystko jest w bazie danych; ciekawym czy walidację
danych na formularzach tez robicie za pomocą SQLa?
Walidacja nie jest robiona w W-SQL-u ale powiem szczerze, ze myslalem czy
nie da sie tego zrobic:)
>>> A więc użyj gotowca - zewnętrznej biblioteki do przetwarzania dokumentów XML, pod
warunkiem że Twoja baza danych już nie posiada
>>> czegoś takiego...
Nie posiada i wlasnie szukam prostego gotowca, zeby przepisac go na W-SQL-a:)
> Zdefiniuj - "logika biznesowa".
To jest moja definicja, tak na szybko, z glowy:
- logika biznesowa decyduje o tym jak program ma dzialac a nie jak wygladac,
przyczym formatowanie XMLa uwazam za element warstwy logicznej poniewaz
ta funkcjonalnosc ma sluzyc wdrozeniowca/programista a nie ostatecznemu userowi.
> OK, a powiedz w jaki sposób odwołujecie się do tej bazy?
> Wołacie bezpośrednio obiekty bazy za pomocą SQLa (select from; exec proc, etc.),
czy macie jakiś ładniutki wrapper na tę bazę?
Dosc skomplikowany wrapper wywolywany z parametrami:
- wykonaj nastepujece zadania zanim wywolasz funkcje glowna ....(sprawdz bledy, potem
dzialaj wedlug ostatniego parametru)
- wykonaj funkcje glowna....(sprawdz bledy, potem dzialaj wedlug ostatniego
parametru)
- pozamiataj po wywolaniu funkcji glownej....(sprawdz bledy, potem dzialaj wedlug
ostatniego parametru)
- wykonaj akcje przewidziana do obslugi bledow (jezeli cos sie wysypie wyswietl
komunikat, z numerem akcji i popros
uzytkownika zeby skontaktowal sie z administratoram)
1) System ma ponad 10 lat
2) Osobiscie pracuje nad nim od 5 lat
3) Poczatkowo wydawalo mi sie, ze system jest absurdalnie skomplikowany
i jest to akademicki przyklad przerostu formy nad trescia.
4) Po 5- latach stwierdzam, ze system jest totalnie flexybilny i konfigorowalny.
Nowym klientom wystarczy wystawic baze w podstawowej postaci i binarki
a nastepnie dowolnie skonfigorowac na ich potrzeby- paroma skryptami W-SQL.
-
10. Data: 2010-01-22 13:17:53
Temat: Re: Algorytm formatowania tekstu XML
Od: Mikolaj Rydzewski <m...@c...pl>
Bastion wrote:
> 4) Po 5- latach stwierdzam, ze system jest totalnie flexybilny i konfigorowalny.
A takiego słowa jak 'elastyczny' nie znasz?