The value of currentTiddler, is a variable which is generally set to whichever tiddler is being rendered. Transclusions count as the containing tiddler, not the transcluded tiddler. This is by design so that templates work. That is why when you transclude a tiddler with your filter it doesn't act like you expect.
There are two way around this that I generally use. The first is the tiddler widget which sets the value of currentTiddler
<$tiddler tiddler=xxx>
{{xxx}}
</$tiddler>
the other way, which I use more often, is using a list widget. Inside a list widget the value of currentTiddler is set to the current item in the list. So
<$list filter='[is[current]field:title[XXX]]'>
{{XXX}}
</$list>