![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 21.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Jak w tytule mam wykonać prace ale nie mam pojęcia jak napisać kod php aby dodawał i zapisywał rekordy w pliku XML Mam przykładowy plik XML z arkuszem i schema (arkusz i schema działają poprawnie) Kod <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="towar.xsl"?> <baza xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="towar.xsd"> <towar id="1"> <nazwa>Mleko łaciate</nazwa> <waznosc>21.03.2009</waznosc> <rodzaj>nabiał</rodzaj> <info>sda</info> </towar> </baza> Teraz chce napisać kod php aby dodawał następny rekord np towar id="2" próbowałem DOMem ale nie wiem dokładnie jak powinien wyglądać kod php wstawiający nowy rekord próbowałem tak: Kod <? $xml = new DOMDocument(); $xsl = new DOMDocument(); $xml->load("baza.xml"); $xsl->load("towar.xsl"); $baza = $xml->documentElement; $procesor = new XSLTprocessor(); $procesor->importStylesheet($xsl); echo $procesor->transformToXML($xml); $towar = $baza->createElement('towar','2'); $nazwa = $baza->createElement('nazwa','chleb'); $waznosc = $baza->createElement('waznosc','12.04.2009'); $rodzaj = $baza->createElement('rodzaj','pieczywo'); $info = $baza->createElement('info','cos tam'); $baza->appendChild($towar); $towar->appendChild($nazwa); $towar->appendChild($waznosc); $towar->appendChild($rodzaj); $towar->appendChild($info); echo $xml->saveXml(); ?> Ale niestety nic nie dodaje nie mam pojecia szczerze mówiac jak to zrobić jestem początkującym programistą mam 13 lat,mój starszy brat ma to zrobić na studia i chce pokazać, że umie coś zrobić a nawet jak nie zrobić to znależć na necie ![]() |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 70 Dołączył: 13.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
A możesz podać schema do tego xmla?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 21.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam ponownie!
Udało mi się napisać kod php który dodaj do bazy xml ale nie do końca jest to co chciałem nie wiem jak zrobić żeby w danym pliku xml był już na stałe wpisany element <baza> ze schema i kodowaniem czyli Kod <?xml version="1.0" encoding="UTF-8"?> <baza xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="towar.xsd"></baza> i żeby dodać tylko kolejne elementy <towar> id to wiadomo recznie wystarczy jak wpisze. A i podany kod poniżej dodaje o bazy po dodaniu dwoch kolejnych przy trzecim wyskakuje przełodowanie xml tzn ze nie moze dodać bo cos tam jest i po odświeżeniu jeszcze raz kasuje poprzednie i wstawia nowe. podaje plik php Kod <? $xml = new DOMDocument(); $xsl = new DOMDocument(); $xml->formatOutput = true; $xml->preserveWhiteSpace = false; $xml->load("baza.xml"); $xsl->load("towar.xsl"); $procesor = new XSLTprocessor(); $procesor->importStylesheet($xsl); echo $procesor->transformToXML($xml); $baza = $xml->createElement('baza'); $schema = $xml->appendChild($baza); $schema->setAttribute('xmlns:xsi','"http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="towar.xsd"'); $towar = $xml->createElement('towar'); $newtowar = $xml->appendChild($towar); $newtowar->setAttribute("id","5"); $baza->appendChild($towar); $nazwa = $xml->createElement('nazwa','chleb'); $towar->appendChild($nazwa); $waznosc = $xml->createElement('waznosc','12.04.2009'); $towar->appendChild($waznosc); $rodzaj = $xml->createElement('rodzaj','pieczywo'); $towar->appendChild($rodzaj); $info = $xml->createElement('info','cos tam'); $towar->appendChild($info); $xml->save("baza.xml"); ?> z tym atrybutem bazy oczywiscie troche kombinowałem jakby tu dodać ![]() i schema zgodnie z sugestią kolegi Kod <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="baza"> <xs:complexType> <xs:sequence> <xs:element name="towar" type="Towar-type" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="Towar-type"> <xs:all> <xs:element name="nazwa" type="xs:string"/> <xs:element name="waznosc" type="rok-type"/> <xs:element name="rodzaj" type="xs:string"/> <xs:element name="info" type="xs:string"/> </xs:all> <xs:attribute name="id" type="id-type" use="required"/> </xs:complexType> <xs:simpleType name="id-type"> <xs:restriction base="xs:int"> <xs:minInclusive value="1"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="waznosc-type"> <xs:restriction base="xs:int"> <xs:pattern value="[0-9][09].[0-9][0-9].[0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:schema> a i właśnie moze mi ktos podpowiedziec jak napisac formularz do tego żeby atrybuty poszczególnym elementom oprócz bazy można byłego przez niego wpisywać. Dziękuje za wszelką pomoc Pozdrawiam Ten post edytował prusik 21.01.2009, 23:32:56 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:09 |