XML XSLT түрлендіруіне XHTML

Html бетін xml файлына түрлендіру үшін өте қарапайым xslt жасаймын.

But it appears to me that the starting point is not that straightforward to me.My first goal is to convert a <html> tag into a tag.

Мен келесі xslt жасадым:

 
   
     
    
 

 
   
 

 
  
     Conversion Test
  
 

However, now after I run this xslt, the result xml is purely of the same content of the original html page, it seems that the third template match that I wrote (to match the <html> tag) never gets hit.

Бастапқы html келесідей:


 
   <head>..</head>
   <body>...</body>
 </html>

Мамандар маған мұнда аздап көмектесе алар ма еді?

2
@DevNull, мен мәселені бастапқы html-мен жаңарттым
қосылды автор Kevin, көзі
Сіз өзіңіздің html үлгісін бере аласыз ба? (әсіресе xmlns = «http://www.w3.org/1999/xhtml» сияқты кез келген аттар кеңістігі)
қосылды автор Daniel Haley, көзі
Рахмет. Жақсы сұрақ +1
қосылды автор Daniel Haley, көзі

3 жауаптар

XSLT 1.0:

xsl: stylesheet дегенге xmlns: x = «http://www.w3.org/1999/xhtml» қосып көріңіз және match = «x: html» . (Ескерту: «x» пайдаланудың қажеті жоқ, сіз қалаған нәрсені таңдай аласыз).

XSLT 2.0:

Жоғарыда келтірілген әдісті қолданыңыз немесе матчыңыздағы есім кеңістігінің префиксін «*» ( match = «*: html» ) деп ауыстырыңыз. xsl: stylesheet -ге xpath-default-namespace = «http://www.w3.org/1999/xhtml» қосуға болады.

4
қосылды
рахмет, ол жұмыс істеді! Ия, html - бұл шынымен xhtml және XSLT1.0 пайдаланамын, ұсынылған аттар кеңістігіңізді енгізгеннен кейін, тамаша жұмыс істеді :)
қосылды автор Kevin, көзі
Мен бастапқы құжаттың сипатын көрсету үшін тақырыпты жаңарттым.
қосылды автор Kevin, көзі
@Kevin - Сіз өте қуаныштымыз. Сондай-ақ, xml шығысындағы аттар кеңістігін қаламасаңыз, xsl: stylesheet дегенге exception-result-prefixes = «# all» қосыңыз. (Ескерту: x ) x дегенді қоспағанда #all дегенді x ауыстырыңыз.
қосылды автор Daniel Haley, көзі

XSLT-тің мақсаты xml құжаттарды басқа xml құжаттарына түрлендіру болып табылады. HTML - xml ​​құжаты емес. XHTML xml болса, ол шын мәнінде HTML түзетіледі, сондықтан XSLT көмегімен не істеуді оңай не мүмкін болатынына сенімді емеспін.

0
қосылды
Енді сіз қазір тақырыпты жаңартасыз :). Міне, бұл менің проблемамды көрсетеді.
қосылды автор Rob, көзі

Бірінші үлгіді алып тастауға немесе оны әрбір node() -бен сәйкестендіруге қарағанда нақты жасауға тырысқыңыз келуі мүмкін.

0
қосылды
@lkuty, бірінші үлгіді жоюға тырысты. Енді xml - бұл жай ғана ешқандай түзетусіз мәтіннің үлкен түйіні. Ол барлық түпнұсқалық HTML-беттегі мәтінді қамтиды.
қосылды автор Kevin, көзі
Сіз жеке басын өзгертуді алып тастайсыз ба?
қосылды автор Daniel Haley, көзі
Мен қателестім. Мен бірінші ережені үшіншіден таңдап аламын деп ойладым, бірақ шын мәнісінде элементпен сәйкестік үлгісі үшін әдепкі басымдық node() мәнінен асып кетеді және осылайша бұл мәселе болмауы мүмкін. Мен NS туралы ойлаған емеспін.
қосылды автор lkuty, көзі