XML belgesinin yapısı bilindiği zaman kullanımı büyük verimsizlik (tüm belge ağacının kastetmek) neden olabilir olarak, //
XPath sözde operatörü kullanmaktan kaçınmak daha iyidir.
Bu nedenle, sağlanan XML belgesi için bu XPath ifadesini recomment:
/*/b[c]
Bu XML belgesinin üst elemanın alt öğesi olan herhangi b
elemanı seçer ve o c
adında bir çocuk eleman vardır . GÜNCELLEME
: OP sadece birkaç dakika önce bir saniye güçl bir şekilde soru soruldu:
İkinci soru ben 2 koşulları birleştirmek istediğinizde: Ben elemanı almak istediğiniz var name = "b2" ve eleman c vardır Ama bu sözdizimi çalışmamasına görünüyor: //b[@name='b2' and c]
sağlanan XPath ifadesi tam inci seçmek yapar İstenen eleman. Burada
XSLT olduğu - doğrulaması:
<a>
<b name = "b1"></b>
<b name = "b2"><c/></b>
<b name = "b3"></b>
</a>
XPath ifadesi değerlendirildi ve doğru olduğu: bu dönüşüm sağlanmaktadır XML belgesi uygulanır
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:copy-of select="//b[@name='b2' and c]"/>
</xsl:template>
</xsl:stylesheet>
-selected öğe çıktıya kopyalanır:
<b name="b2">
<c/>
</b>
Tam olarak "işe yaramaz gibi görünüyor" ne demektir? Lütfen yeni, ayrı bir soru sorun ve kaynak XML belgesini, kullanılan XPath ifadesini ve istediğiniz sonucu ve elde ettiğiniz sonucu eksiksiz olarak (eksiksiz olarak) sağlayın. Geçerli XML belgesine sahip olan XPath ifadesi '// b [@ name = 'b2' ve c]' 'a''nın ikinci çocuğunu seçer - tam olarak olması gerektiği gibi. –