이 예제에서 SQL에서 두 노드 사이의 공통 노드를 계산하는 방법 :
셀 <li>
사이의 태그 <h2 id="vgn">VGN A </h2>
와 <h2 id="vgn">VGN </h2>
와의 수 <h2>
태그를.
즉,이 예에서 h2 number1과 h2 number 2 사이의 li 수입니다.
<table class="table table-condensed table-no-border table-brand-main">
<tr><td><h2 id="vgn">VGN A </h2></td></tr>
<tr><td>
<style>
ul.brand_572 {
-moz-column-count: 6;
-webkit-column-count: 6;
column-count: 6;
}
ul.brand_572 li
{
width:120px;
}
/*ul.brand_572 li a.product-title
{
width:120px;
}*/
</style>
<ul class="specialclass brand_572">
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
</ul>
</td>
</tr>
<tr><td><h2 id="vgn">VGN </h2></td></tr>
<tr><td>
<ul class="specialclass brand_572">
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
<li>
<a href="sony-vgn-ar290g-battery-6cells-4400mah-11-1v.html">Sony VGN-AR290G </a>
</li>
</ul>
</td></tr>
</table>
예상 출력 :
count of li between h2 and h2
7 1 2
c.li = 7 번 h2 1,2 사이
이제 HTML
T-SQL로 해결하려는 몇 가지 문제에 대해 세 가지 질문을했습니다 .
나는 당신이 XML에 대한 깊은 오해를 가지고 있다고 말했습니다 . 다시 한 번 해보 셨습니다. 질문에 xml
. 그러나 이것은 XML이 아닙니다 (처럼 보이더라도)! 이것은 HTML입니다!
SQL Server는 XML을 지원하지만 HTML에 적합한 도구는 아닙니다. HTML 파서 또는 절차 언어를 사용하여 직접 구문 분석 알고리즘을 작성하십시오.
SQL Server가 올바른 도구가 아닌 이유를 알려주세요.
당신의 특별한 경우에- 그러나 당신은 이것에 결코 의지 할 수 없습니다 !!! -귀하의 HTML은 유효한 XML입니다. 이 경우-그리고이 경우 에만! -하나는 생각할 수 XQuery
있습니다. <li>
요소 뒤 의 -elements 계산 <h2>
은 다음과 같습니다.
DECLARE @s VARCHAR(MAX)='Your HTML here';
DECLARE @xml XML=CAST(@s AS XML); --you'd get your first error here probably
DECLARE @H2_id VARCHAR(100)='vgn';
SELECT COUNT(*) AS CountOnThisLevel
FROM @xml.nodes('//h2[@id=sql:variable("@H2_id")]/../../../tr[2]/td/ul/li') AS A(li)
결과는 7입니다.
이 경로
//h2[@id=sql:variable("@H2_id")]/../../../tr[2]/td/ul/li
다음과 같이 읽습니다.
문서에서 "H2_id"변수의 내용과 동일한 id 속성을 가진 h2를 검색합니다 . 이제 세 단계 위로 이동 한 다음 두 번째 단계를 취하고
<tr>
트리에서<td>
,<ul>
및 로 이동합니다<li>
. 거기에서 얼마나 많은 것을 발견했는지 세십시오.
괜찮아 보이지만
<h2>
수 있습니다 <H2>
(XQuery는 대소 문자를 구분합니다!)<thead>
및<tfoot>
<div>
체인에-태그 가있을 수 있습니다.당신은 정말로 돌아 서서 적절한 도구를 찾아야합니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다