Załóżmy, że mam pełny dokument HTML jako dane wejściowe XML.
Jak wyglądałby plik XSLT, jeśli chcę wydrukować tylko pierwszy (lub dowolny) obraz z pliku HTML?XSLT Pierwsze wystąpienie określonego znacznika
Odpowiedz
wyrażenie XPath, że jeden wybiera pierwszą <img>
elementu w dokumencie:
(//img)[1]
Należy pamiętać że częsty błąd - jak wykonane przez @Oded
w jego odpowiedź jest sugeruje następujące wyrażenie XPath - ogólnie może wybrać więcej niż jeden element:
//img[1]
(: ŹLE !!! :)
Spowoduje to wybranie wszystkich elementów <img>
w dokumencie, z których każdy jest pierwszym dzieckiem swojego rodzica <img>
.
Oto dokładne wyjaśnienie tego Częstym błędem - w W3C XPath 1.0 Recommendation:
UWAGA: Ścieżka lokalizacja //para[1]
nie znaczy taki sam jak ścieżka lokalizacji /descendant::para[1]
. Ten ostatni wybiera pierwszy element potomny para
; pierwszy wybiera wszystkich potomków para
pierwiastków, które są pierwszymi dziećmi z ich rodziców.
Kolejny problem istnieje, jeśli dokument zdefiniował domyślny obszar nazw, co musi mieć miejsce w przypadku XHTML. XPath traktuje każdą nieprefixowaną nazwę jako należącą do bez przestrzeni nazw, a wyrażenie nie wybiera żadnego węzła, ponieważ w dokumencie nie ma elementu należącego do bez obszaru nazw i ma on nazwę img
.
W tym przypadku istnieją dwa sposoby określenia poszukiwanego wyrażenia XPath:
(//x:img)[1]
- gdzie przedrostekx
skojarzony (przez język hosting) z określonej domyślnej namespcae (w tym przypadku tego jest obszarem nazw XHTML ).(//*[name()='img'])[1]
Wyrażenie XPath spowoduje pobranie pierwszego obrazu ze strony HTML: (//img)[1]
.
Zobacz odpowiedź z @Dimitre Novatchev
, aby uzyskać więcej informacji na temat problemów z tym.
Zobacz odpowiedź na wyjaśnienie problemu z twoją odpowiedzią. Przeczytaj specyfikację XPath - definicję skrótu '//' i wyszukaj ten częsty błąd.Jeśli problem nadal nie jest jasny, poproś o osobne pytanie i wielu ludzi z przyjemnością ci to wyjaśni. :) –
** Ta odpowiedź to W R O N G ** !!!!! Zobacz moją odpowiedź na wyjaśnienia. –
Zdecydowanie nie chcę czytać specyfikacji XPath. Ale widzę, co mówi Dimitre. '// img [1]' wybierze pierwszy znacznik img * dowolnego * rodzica zamiast pierwszego dokumentu. –
- 1. XSLT: Wybierz następujące rodzeństwo, aż do osiągnięcia określonego znacznika
- 2. Podział na pierwsze wystąpienie
- 3. Python/NumPy Pierwsze wystąpienie podwielokrotności
- 4. Jak usunąć pierwsze wystąpienie podciągu w ciągu?
- 5. Znajdź pierwsze niezerowe wystąpienie w ramce danych
- 6. SQL Pierwsze wystąpienie z 15 na datę
- 7. Zastąp pierwsze wystąpienie ciągu w Pythonie
- 8. znaleźć pierwsze wystąpienie klasy w div
- 9. Jak wyświetlić pierwsze wystąpienie preg_match w ciągu
- 10. php zastąpić pierwsze wystąpienie napisu z 0th pozycji
- 11. Użyj awk, aby znaleźć pierwsze wystąpienie ciągu znaków po ograniczniku
- 12. Znajdź pierwsze wystąpienie ciągu znaków z wektora <string>
- 13. Jak mogę podzielić ciąg znaków na pierwsze wystąpienie czegoś?
- 14. Pierwsze wystąpienie aktywności nigdy nie zostanie pobrane ze śmieci?
- 15. Zastąp pierwsze wystąpienie podciągu w ciągu znaków w SQL
- 16. Ruby - zastąpić pierwsze wystąpienie podciągu z innym ciągiem
- 17. Jak zamienić pierwsze wystąpienie ciągu znaków w języku Java?
- 18. Co to jest wyrażenie XPath, aby znaleźć tylko pierwsze wystąpienie?
- 19. Pierwsze __init __() dostał nieoczekiwaną kluczowego argumentu '' wystąpienie z CreateView Django
- 20. Jak zamienić pierwsze wystąpienie wyrażenia regularnego w Pythonie?
- 21. Zastąp pierwsze wystąpienie ":", ale nie drugie w R
- 22. Jak zamienić tylko pierwsze wystąpienie znaku w CString?
- 23. Jak zidentyfikować pierwsze wystąpienie duplikatów wierszy w Pandonie Pythona DataFrame
- 24. Jak liczyć wystąpienie określonego elementu w ndarray w Pythonie?
- 25. Pierwsze "mydło przedrostkowe" nie jest zdefiniowane "w pliku xslt
- 26. Jak uzyskać wszystkie elementy określonego znacznika HTML w javascript?
- 27. Railsy: jak uruchomić wszystkie migracje do określonego znacznika czasu
- 28. return Widok z modelem i przejście do określonego znacznika zakotwiczenia
- 29. XSLT coraz ostatni element
- 30. XSLT: Tworzenie mapy w XSLT
Cóżeś zdobyć tak daleko? Co nie działa? – Oded
Dobre pytanie (+1). Zobacz moją odpowiedź na jedyne prawidłowe rozwiązanie do tej pory. :) –