Avatar billede davidchristensen Praktikant
22. marts 2003 - 12:36 Der er 15 kommentarer og
1 løsning

XML-logik?

Hvorfor kan jeg ikke sige:

<document><overskrift>her er en overskrift</overskrift>og her er resten af dokumentet</document> ? ..Det burde da være en logisk måde at markup'e sin data på.. Jeg kan ihvertfald ikke kalde resten af dokumentet ved at sige <xsl:value-of select="document"/>

Nogen der véd hvordan?

David
-
Avatar billede erikjacobsen Ekspert
22. marts 2003 - 12:38 #1
<document><overskrift>her er en overskrift</overskrift><paragraf>og her er resten af dokumentet</paragraf></document>

se, dét er logik...:)
Avatar billede getalife Nybegynder
22. marts 2003 - 12:39 #2
<document>
  <overskrift>her er en overskrift</overskrift>
  <tekst>og her er resten af dokumentet</tekst>
</document>
Avatar billede getalife Nybegynder
22. marts 2003 - 12:40 #3
ja, eller som erikjacobsen skriver.... ;)
Avatar billede getalife Nybegynder
22. marts 2003 - 12:42 #4
eller:
<document overskrift="her er en overskrift">
  og her er resten af dokumentet
</document>
Avatar billede erikjacobsen Ekspert
22. marts 2003 - 12:47 #5
Du kan nemlig ikke have tekst stående og "flagre" uden at fortælle
hvad det er for noget. Det er jo ikke ligefrem HTML det her.
Avatar billede davidchristensen Praktikant
22. marts 2003 - 13:05 #6
nej, for så blir det en sekventel logik, altså at man må deffinere sin data i rækkefølge og det holder jo ingensteder hvis det er noget midt i en tekst man vil formatere.. feks. <text>her står der noget<format>og dether vil jeg formatere</format> og så står der lige lidt mere</text>

Men jeg har iøvrigt noget om hvordan det kan lade sig gøre i en bog her jeg har.. nu skal jeg bare lige lure det..
Avatar billede davidchristensen Praktikant
22. marts 2003 - 13:17 #7
hehe.. <xsl:value-of select="text()"/> , så vælger man al den tekst der står inde i et tag' uanset om den tekst er afbrudt af flere tags :) Tak til mig.
Avatar billede davidchristensen Praktikant
22. marts 2003 - 13:18 #8
.og erik, jo det er jo netop strukturmæssigt lissom html dether.. Markup Language, du véd.. ;)
Avatar billede getalife Nybegynder
22. marts 2003 - 13:20 #9
Måske skulle du være lidt mere specifik i dit spørgsmål :)
Avatar billede davidchristensen Praktikant
22. marts 2003 - 13:26 #10
okay.. jeg synes så det varrimeligt specifikt.. Det var bare denher idé om at man ikke kunne have ting "flagrende" som erik siger jeg ville lure, fordi i så fald vil det være en anden logik end den jeg sådan lige kunne forestille mig man vil kunne bruge xml til.. Men man kan altså godt sige:

<document><overskrift>her er en overskrift</overskrift>og her er resten af dokumentet</document> og så kalde dokumentet ved at bruge document/text()..

nu skal jeg så bare lige lure hvilken rækkefølge templatesene skal være i.. så den viser overskriften for oven og evt. andre tags indeni selve teksten.. hm..
Avatar billede davidchristensen Praktikant
22. marts 2003 - 13:36 #11
okay jeg mangler vist lige en xpath-ting her der får eventuelt andre tags til at "flette" sig ind imellem teksten i dokumentet.. Ligenu kommer de forskellige elementer ud oven på eller efter hinanden og det forringer jo læsebarheden en hel del må man sige..

Nogen der har nogen ideer?
Avatar billede davidchristensen Praktikant
22. marts 2003 - 13:48 #12
okay, jeg har fundet denher x-diagram ting som i princippet gør det rigtigt; nu skal jeg bare lige lure logikken..

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<!-- match rod-noden -->
<xsl:template match="/">
    <html>
        <head>
            <link href="xdiagram.css" rel="styleSheet" type="text/css" />
        </head>
        <body>
            <xsl:apply-templates select="*"/>
        </body>
    </html>
</xsl:template>


<!-- match elementer -->
<xsl:template match="*">
    <div>
        <xsl:attribute name="class">indryk<xsl:value-of select="count(ancestor::*)" /></xsl:attribute>
        <b><xsl:value-of select="name()" />&#10;</b>
        <xsl:apply-templates select="*|text()|@*" />&#10;
    </div>
</xsl:template>

<!-- match tekst-nodes -->
<xsl:template match="text()">
    <xsl:value-of select="." />
</xsl:template>

<!-- match attributter -->
<xsl:template match="@*">
    [<xsl:value-of select="name()" />="<xsl:value-of select="." />"]
</xsl:template>

</xsl:stylesheet>

Tak. Smid nogle svar :)
Avatar billede janegil Nybegynder
22. marts 2003 - 15:56 #13
Du kan da godt ha tekst- og element-noder om hverandre. Selv om dokumentet blir vanskeligere å håndtere, 'mer ufomelt', 'mindre logisk' og fx http://www.oio.dk/ derfor spesifiserer at du ikke skal gjøre det. Med det du gjorde, ER velfomet XML, od det er også valid iflg følgende DTD og skjema:

<!ELEMENT document (#PCDATA | overskrift)*>
<!ELEMENT overskrift (#PCDATA)>

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="document">
        <xs:complexType mixed="true">
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="overskrift" type="xs:string"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>
Avatar billede davidchristensen Praktikant
22. marts 2003 - 16:05 #14
janegil, jeg mener ikke det bliver mere ulogisk. Det er da netop meget logisk at man kan formatere en stor bid, og dele af denne bid er formateret i mindre bidder - og disse kan være formateret i endnu mindre bidder. Det er da at afskære sig fra nogle muligheder kun at kunne formatere noget data som een ting, imens på "min" måde kan man formatere alle de ting man vil OG deres fælles variable relationer indbyrdes. Egentlig kan jeg ikke forstå at man ikke kan bruge denne måde på "officiel" vis fordi det er da meget en logisk måde man kunne ønske sig at formatere noget på synes jeg..

Men tak for din dtd :)
Avatar billede davidchristensen Praktikant
19. januar 2004 - 09:58 #15
Der er lige nogle point..
Avatar billede janegil Nybegynder
19. januar 2004 - 10:35 #16
Jeg skrev jo også 'mindre logisk' i anførselstegn.

XML er ingen magi, som fjerner behovet for godt design. Dessuten kan man ikke se på et XML-dokument at designet er godt, fordi det avhenger av hva det skal brukes til. Skal det være input til XSLT, vil blanding av tekst- og elementnoder som regel være dårlig design.

Retningslinjene fra oio.dk hindrer deg ikke i å bruke blandede XML-noder i et tekstdokument. På samme måte som du fortsatt kan bruke Word i forvaltningen. Retningslinjene deres gjelder bruk av XML til utveksling av data, ikke utveksling av prosatekst. (Men de fleste prosatekster i offentlig forvaltning inneholder opplysninger som med fordel kunne være maskinlesbare.)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester